// This function handles extended codes (EXT1 + code), from the extended sets // G2 (20-7F) => Mostly unmapped, except for a few characters. // G3 (A0-FF) => A0 is the CC symbol, everything else reserved for future expansion in EIA708-B // C2 (00-1F) => Reserved for future extended misc. control and captions command codes //! @todo This code is completely untested due to lack of samples. Just following specs! // Returns number of used bytes, usually 1 (since EXT1 is not counted). int handle_708_extended_char (cc708_service_decoder *decoder, unsigned char *data, int data_length) { int used; unsigned char c=0x20; // Default to space unsigned char code=data[0]; if (/* data[i]>=0x00 && */ code<=0x1F) // Comment to silence warning { used=handle_708_C2 (decoder, data, data_length); } // Group G2 - Extended Miscellaneous Characters else if (code>=0x20 && code<=0x7F) { c=get_internal_from_G2 (code); used=1; process_character (decoder, c); } // Group C3 else if (code>=0x80 && code<=0x9F) { used=handle_708_C3 (decoder, data, data_length); //! @todo Something } // Group G3 else { c=get_internal_from_G3 (code); used=1; process_character (decoder, c); } return used; }
void handle_708_extended_char (cc708_service_decoder *decoder, unsigned char code) { printf ("In handle_708_extended_char: [%c]\n",code); unsigned char c=0x20; // Default to space if ((code>=0x20 && code<=0x3F) || (code>=0x80 && code<=0x9F)) c=get_internal_from_G2 (code); else if (code==0xa0) c=get_internal_from_G3 (code); process_character (decoder, c); }