pager_flex_parse.h
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
00040 #define FIELD_DELIM ((unsigned char)128)
00041
00042 class pager_flex_parse : public gr_sync_block
00043 {
00044 private:
00045
00046 friend pager_flex_parse_sptr pager_make_flex_parse(gr_msg_queue_sptr queue, float freq);
00047 pager_flex_parse(gr_msg_queue_sptr queue, float freq);
00048
00049 std::ostringstream d_payload;
00050 gr_msg_queue_sptr d_queue;
00051
00052 int d_count;
00053 gr_int32 d_datawords[88];
00054
00055 page_type_t d_type;
00056 int d_capcode;
00057 bool d_laddr;
00058 float d_freq;
00059
00060 void parse_data();
00061 void parse_capcode(gr_int32 aw1, gr_int32 aw2);
00062 void parse_alphanumeric(int mw1, int mw2, int j);
00063 void parse_numeric(int mw1, int mw2, int j);
00064 void parse_tone_only();
00065 void parse_unknown(int mw1, int mw2);
00066
00067 public:
00068 int work(int noutput_items,
00069 gr_vector_const_void_star &input_items,
00070 gr_vector_void_star &output_items);
00071 };
00072
00073 #endif