Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef INCLUDED_PAGER_FLEX_PARSE_H
00023 #define INCLUDED_PAGER_FLEX_PARSE_H
00024
00025 #include <gr_sync_block.h>
00026 #include <gr_msg_queue.h>
00027 #include <pageri_flex_modes.h>
00028 #include <sstream>
00029
00030 class pager_flex_parse;
00031 typedef boost::shared_ptr<pager_flex_parse> pager_flex_parse_sptr;
00032
00033 pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
00034
00035 #define FIELD_DELIM ((unsigned char)128)
00036
00037
00038
00039
00040
00041 class pager_flex_parse : public gr_sync_block
00042 {
00043 private:
00044
00045 friend pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
00046 pager_flex_parse(gr_msg_queue_sptr queue, float freq);
00047
00048 std::ostringstream d_payload;
00049 gr_msg_queue_sptr d_queue;
00050
00051 int d_count;
00052 gr_int32 d_datawords[88];
00053
00054 page_type_t d_type;
00055 int d_capcode;
00056 bool d_laddr;
00057 float d_freq;
00058
00059 void parse_data();
00060 void parse_capcode(gr_int32 aw1, gr_int32 aw2);
00061 void parse_alphanumeric(int mw1, int mw2, int j);
00062 void parse_numeric(int mw1, int mw2, int j);
00063 void parse_tone_only();
00064 void parse_unknown(int mw1, int mw2);
00065
00066 public:
00067 int work(int noutput_items,
00068 gr_vector_const_void_star &input_items,
00069 gr_vector_void_star &output_items);
00070 };
00071
00072 #endif