-
+
#include <stdio.h>
#include "si.h"
SDT::SDT( DescriptorParser *des_parser)
: ServiceInformation( -1, des_parser)
{
- original_network_id = 0x00;\r
- reserved_future_use = 0x00;\r
-}\r
-\r
-SDT::~SDT()\r
+ original_network_id = 0x00;
+ reserved_future_use = 0x00;
+}
+
+SDT::~SDT()
{
- clearSDT();\r
+ clearSDT();
}
void SDT::clear()
{
clearSDT();
ServiceInformation::clear();
-}\r
-\r
-SDT::STATUS SDT::parse( SectionBuffer &sec)\r
+}
+
+SDT::STATUS SDT::parse( SectionBuffer &sec)
{
- int32_t size = 0;\r
+ int32_t size = 0;
SERVICE s;
- clearSDT();\r
- \r
- STATUS state = ServiceInformation::parse( sec);\r
- if( state != SUCCESS) {\r
- return state;\r
- }\r
+ clearSDT();
+
+ STATUS state = ServiceInformation::parse( sec);
+ if( state != SUCCESS) {
+ return state;
+ }
if( sec.length() < SD_PARSE_SIZE) {
return ERROR_PARSE_SECTION;
}
original_network_id = (sec[ 0] << 8) + sec[ 1];
- reserved_future_use = sec[ 2];\r
+ reserved_future_use = sec[ 2];
sec += SD_PARSE_SIZE;
- \r
- while( sec.length() >= SERVICE_HEADER_SIZE) {\r
- s.service_id = (sec[ 0] << 8) + sec[ 1];\r
- s.reserved_future_use = (sec[ 2] >> 5) & 0x07;\r
- s.EIT_user_defined_flags = (sec[ 2] >> 2) & 0x07;\r
- s.EIT_schedule_flag = (sec[ 2] >> 1) & 0x01;\r
- s.EIT_present_following_flag = (sec[ 2] >> 0) & 0x01;\r
- s.running_status = (sec[ 3] >> 5) & 0x07;\r
- s.free_CA_mode = (sec[ 3] >> 4) & 0x01;\r
+
+ while( sec.length() >= SERVICE_HEADER_SIZE) {
+ s.service_id = (sec[ 0] << 8) + sec[ 1];
+ s.reserved_future_use = (sec[ 2] >> 5) & 0x07;
+ s.EIT_user_defined_flags = (sec[ 2] >> 2) & 0x07;
+ s.EIT_schedule_flag = (sec[ 2] >> 1) & 0x01;
+ s.EIT_present_following_flag = (sec[ 2] >> 0) & 0x01;
+ s.running_status = (sec[ 3] >> 5) & 0x07;
+ s.free_CA_mode = (sec[ 3] >> 4) & 0x01;
s.descriptors_loop_length = ((sec[ 3] & 0x0f) << 8) + sec[ 4];
sec += SERVICE_HEADER_SIZE;
if( sec.length() < s.descriptors_loop_length) {
if( size == -1) {
return ERROR_PARSE_SECTION;
}
- sec += size;\r
+ sec += size;
services.push_back( s);
- }\r
- \r
- erase_buffer = true;\r
- return SUCCESS;\r
+ }
+
+ erase_buffer = true;
+ return SUCCESS;
}
bool SDT::checkID( uint8_t id)
EIT::EIT( DescriptorParser *des_parser)
: ServiceInformation( -1, des_parser)
{
- transport_stream_id = 0x00;\r
- original_network_id = 0x00;\r
- segment_last_section_number = 0x00;\r
- last_table_id = 0x00;\r
-}\r
-\r
-EIT::~EIT()\r
+ transport_stream_id = 0x00;
+ original_network_id = 0x00;
+ segment_last_section_number = 0x00;
+ last_table_id = 0x00;
+}
+
+EIT::~EIT()
{
- clearEIT();\r
+ clearEIT();
}
void EIT::clear()
{
clearEIT();
ServiceInformation::clear();
-}\r
-\r
-EIT::STATUS EIT::parse( SectionBuffer &sec)\r
+}
+
+EIT::STATUS EIT::parse( SectionBuffer &sec)
{
- int32_t size = 0;\r
+ int32_t size = 0;
EVENT e;
- clearEIT();\r
- \r
- STATUS state = ServiceInformation::parse( sec);\r
- if( state != SUCCESS) {\r
- return state;\r
- }\r
+ clearEIT();
+
+ STATUS state = ServiceInformation::parse( sec);
+ if( state != SUCCESS) {
+ return state;
+ }
if( sec.length() < EI_PARSE_SIZE) {
return ERROR_PARSE_SECTION;
- }\r
- transport_stream_id = (sec[ 0] << 8) + sec[ 1];\r
- original_network_id = (sec[ 2] << 8) + sec[ 3];\r
- segment_last_section_number = sec[ 4];\r
- last_table_id = sec[ 5];\r
+ }
+ transport_stream_id = (sec[ 0] << 8) + sec[ 1];
+ original_network_id = (sec[ 2] << 8) + sec[ 3];
+ segment_last_section_number = sec[ 4];
+ last_table_id = sec[ 5];
sec += EI_PARSE_SIZE;
- \r
- while( sec.length() >= EVENT_HEADER_SIZE) {\r
- e.event_id = (sec[ 0] << 8) + sec[ 1];\r
- e.start_time = Converter::date( &sec[ 2]);\r
- e.duration = Converter::time( &sec[ 7]);\r
- e.running_status = (sec[ 10] >> 5) & 0x07;\r
- e.free_CA_mode = (sec[ 10] >> 4) & 0x01;\r
+
+ while( sec.length() >= EVENT_HEADER_SIZE) {
+ e.event_id = (sec[ 0] << 8) + sec[ 1];
+ e.start_time = Converter::date( &sec[ 2]);
+ e.duration = Converter::time( &sec[ 7]);
+ e.running_status = (sec[ 10] >> 5) & 0x07;
+ e.free_CA_mode = (sec[ 10] >> 4) & 0x01;
e.descriptors_loop_length = ((sec[ 10] & 0x0f) << 8) + sec[ 11];
sec += EVENT_HEADER_SIZE;
if( sec.length() < e.descriptors_loop_length) {
if( size == -1) {
return ERROR_PARSE_SECTION;
}
- sec += size;\r
+ sec += size;
events.push_back( e);
- }\r
- \r
- erase_buffer = true;\r
- return SUCCESS;\r
+ }
+
+ erase_buffer = true;
+ return SUCCESS;
}
bool EIT::checkID( uint8_t id)
clearDescriptors( &i->descriptors);
}
events.clear();
-}\r
-\r
-\r
-\r
-TDT::TDT( DescriptorParser *des_parser)\r
- : Section( -1, des_parser)\r
-{\r
-}\r
-\r
-TDT::~TDT()\r
-{\r
-}\r
-\r
-TDT::STATUS TDT::parse( SectionBuffer &sec)\r
-{\r
- int32_t size = 0;\r
- \r
- if( sec.length() < TD_PARSE_SIZE) {\r
- return ERROR_PARSE_SECTION;\r
- }\r
- \r
- JST_time = Converter::date( &sec[ 0]);\r
- sec += TD_PARSE_SIZE;\r
- \r
- erase_buffer = true;\r
- return SUCCESS;\r
-}\r
-\r
-bool TDT::checkID( uint8_t id)\r
-{\r
- return (id == TDT_ID);\r
-}\r
-\r
-\r
-\r
-\r
-TOT::TOT( DescriptorParser *des_parser)\r
- : TDT( des_parser)\r
-{\r
-}\r
-\r
-TOT::~TOT()\r
-{\r
- clearTOT();\r
-}\r
-\r
-void TOT::clear()\r
-{\r
- clearTOT();\r
- Section::clear();\r
-}\r
-\r
-TOT::STATUS TOT::parse( SectionBuffer &sec)\r
-{\r
- int32_t size = 0;\r
- \r
- clearTOT();\r
- \r
- STATUS state = TDT::parse( sec);\r
- if( state != SUCCESS) {\r
- return state;\r
- }\r
- if( table_id == TDT_ID) {\r
- return SUCCESS;\r
- }\r
- \r
- if( sec.length() < TO_PARSE_SIZE) {\r
- return ERROR_PARSE_SECTION;\r
- }\r
- \r
- reserved_2 = (sec[ 0] >> 4) & 0x0f;\r
- descriptors_loop_length = ((sec[ 0] & 0x0f) << 8) + sec[ 1];\r
- sec += TO_PARSE_SIZE;\r
-\r
- size = parseDescriptors( sec, descriptors_loop_length, &descriptors);\r
- if( size == -1) {\r
- return ERROR_PARSE_SECTION;\r
- }\r
- sec += size;\r
- \r
- erase_buffer = true;\r
- return SUCCESS;\r
-}\r
-\r
-bool TOT::checkID( uint8_t id)\r
+}
+
+
+
+TDT::TDT( DescriptorParser *des_parser)
+ : Section( -1, des_parser)
+{
+}
+
+TDT::~TDT()
+{
+}
+
+TDT::STATUS TDT::parse( SectionBuffer &sec)
+{
+ int32_t size = 0;
+
+ if( sec.length() < TD_PARSE_SIZE) {
+ return ERROR_PARSE_SECTION;
+ }
+
+ JST_time = Converter::date( &sec[ 0]);
+ sec += TD_PARSE_SIZE;
+
+ erase_buffer = true;
+ return SUCCESS;
+}
+
+bool TDT::checkID( uint8_t id)
+{
+ return (id == TDT_ID);
+}
+
+
+
+
+TOT::TOT( DescriptorParser *des_parser)
+ : TDT( des_parser)
+{
+}
+
+TOT::~TOT()
+{
+ clearTOT();
+}
+
+void TOT::clear()
+{
+ clearTOT();
+ Section::clear();
+}
+
+TOT::STATUS TOT::parse( SectionBuffer &sec)
+{
+ int32_t size = 0;
+
+ clearTOT();
+
+ STATUS state = TDT::parse( sec);
+ if( state != SUCCESS) {
+ return state;
+ }
+ if( table_id == TDT_ID) {
+ return SUCCESS;
+ }
+
+ if( sec.length() < TO_PARSE_SIZE) {
+ return ERROR_PARSE_SECTION;
+ }
+
+ reserved_2 = (sec[ 0] >> 4) & 0x0f;
+ descriptors_loop_length = ((sec[ 0] & 0x0f) << 8) + sec[ 1];
+ sec += TO_PARSE_SIZE;
+
+ size = parseDescriptors( sec, descriptors_loop_length, &descriptors);
+ if( size == -1) {
+ return ERROR_PARSE_SECTION;
+ }
+ sec += size;
+
+ erase_buffer = true;
+ return SUCCESS;
+}
+
+bool TOT::checkID( uint8_t id)
{
if( TDT::checkID( id)) {
return true;
else if( id == TOT_ID) {
return true;
}
- else {\r
+ else {
return false;
- }\r
-}\r
-\r
-void TOT::clearTOT()\r
-{\r
- clearDescriptors( &descriptors);\r
-}\r
-\r
+ }
+}
+
+void TOT::clearTOT()
+{
+ clearDescriptors( &descriptors);
+}
+