def __init__(   self, 
                    client_id,                      # #1 
                    section_TSpkt_flag,             # #2
                    data_channel_id,                # #3
                    data_stream_id,                 # #4
                    bandwidth,                      # #5                        # Unit : Kbps
                    data_id,                        # #6
                    data_type,                      # #7
                    inputFile):                     # #8
        """
        These 7 parameters (excluding the actual data) form a single EMM stream. 
        One channel, One stream, One data id . 
        """
        # #1 
        self.client_id          = CLongParam(client_id_type,
                                             client_id_length,
                                             client_id)
        # #2                                               
        self.section_TSpkt_flag = CByteParam(section_TSpkt_flag_type,
                                             section_TSpkt_flag_length,
                                             section_TSpkt_flag)
        # #3                
        self.data_channel_id    = CShortParam(data_channel_id_type,
                                              data_channel_id_length,
                                              data_channel_id)
        # #4        
        self.data_stream_id     = CShortParam(data_stream_id_type,
                                              data_stream_id_length,
                                              data_stream_id)

        # #6        
        self.data_id            = CShortParam(data_id_type,
                                              data_id_length,
                                              data_id)
        # #7        
        self.data_type          = CByteParam(data_type_type,
                                             data_type_length,
                                             data_type)
        
        
        #8             
        #Initialize members                           
        self.Section                = 0
        self.IpEmmSectionPerCycle   = 0        
        self.IpEmmSection           = 0
        self.IpEmmSectionLen        = 0                                                
        self.dataTypeLength         = 0
        self._buildIpEmm_(inputFile, bandwidth)
         
        #5
        #Initialize members
        self.minimumBPS     = 0
        self.ReqBWfromMux   = 0
        self.requestBW      = 0  
        self._buildReqBWfromMux_()
               
        # DEBUG PRINTS        
        print 'Section file \"%s\" length %d, will be sent at %d mSec per cycle ' % (inputFile, len(self.Section), SEND_EMM_PERIOD_TIME * KBPS_TO_BPS_SCALE)
        print 'Minimum bitrate for this section (one section per cycle) : %.3f Kbps ' % (self.minimumBPS * BPS_TO_KBPS_SCALE)
        print 'User requested bandwidth %d Kbps, which is %d sections per cycle, %.3f Kbps ' % (bandwidth, self.IpEmmSectionPerCycle, (self.minimumBPS * self.IpEmmSectionPerCycle * BPS_TO_KBPS_SCALE))
        print 'Actual Requested Bandwidth from Multiplexer will be %d Kbps (%d sections per cycle)' % (self.ReqBWfromMux, (self.IpEmmSectionPerCycle + 1))

        These 7 parameters (excluding the actual data) form a single EMM stream. 
        One channel, One stream, One data id . 
        
recipes/Python/577994_EMMG_simulator/recipe-577994.py