#include "stdafx.h" #include "csocket.h" #include "csocketevents.h" #include "utils/utils.h" #include "math.h" #include "cphidget.h" #include "cphidgetdictionary.h" #include "csocket.h" #include "clog.h" #include "cphidgetaccelerometer.h" #include "cphidgetadvancedservo.h" #include "cphidgetanalog.h" #include "cphidgetbridge.h" #include "cphidgetencoder.h" #include "cphidgetfrequencycounter.h" #include "cphidgetgps.h" #include "cphidgetinterfacekit.h" #include "cphidgetir.h" #include "cphidgetmanager.h" #include "cphidgetled.h" #include "cphidgetmotorcontrol.h" #include "cphidgetphsensor.h" #include "cphidgetrfid.h" #include "cphidgetservo.h" #include "cphidgetspatial.h" #include "cphidgetstepper.h" #include "cphidgettemperaturesensor.h" #include "cphidgettextlcd.h" #include "cphidgettextled.h" #include "cphidgetweightsensor.h" #include "cphidgetgeneric.h" regex_t phidgetsetex; regex_t managerex; regex_t managervalex; PWC_SETKEYS(Accelerometer) if(KEYNAME("NumberOfAxes")) { GET_INT_VAL; phid->phid.attr.accelerometer.numAxis = value; phid->phid.keyCount++; } else if(KEYNAME("Acceleration")) { if(CHKINDEX(accelerometer.numAxis,ACCEL_MAXAXES)) { GET_DOUBLE_VAL; INC_KEYCOUNT(axis[index], PUNI_DBL) phid->axis[index] = value; if(value != PUNK_DBL) FIRE(AccelerationChange, index, value); } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("AccelerationMin")) { GET_DOUBLE_VAL; INC_KEYCOUNT(accelerationMin, PUNI_DBL) phid->accelerationMin = value; } else if(KEYNAME("AccelerationMax")) { GET_DOUBLE_VAL; INC_KEYCOUNT(accelerationMax, PUNI_DBL) phid->accelerationMax = value; } else if(KEYNAME("Trigger")) { if(CHKINDEX(accelerometer.numAxis,ACCEL_MAXAXES)) { GET_DOUBLE_VAL; INC_KEYCOUNT(axisChangeTrigger[index], PUNI_DBL) phid->axisChangeTrigger[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else{ PWC_BAD_SETTYPE(Accelerometer); } return ret; } PWC_SETKEYS(AdvancedServo) if(KEYNAME("NumberOfMotors")) { GET_INT_VAL; phid->phid.attr.advancedservo.numMotors = value; phid->phid.keyCount++; } else if(KEYNAME("Position")) { if(index < phid->phid.attr.advancedservo.numMotors?phid->phid.attr.advancedservo.numMotors:ADVSERVO_MAXSERVOS) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorPositionEcho[index], PUNI_DBL) phid->motorPositionEcho[index] = value; if(value != PUNK_DBL) FIRE(PositionChange, index, servo_us_to_degrees(phid->servoParams[index], value, PTRUE)); } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("PositionMin")) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorPositionMin[index], PUNI_DBL) phid->motorPositionMin[index] = value; } else if(KEYNAME("PositionMax")) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorPositionMax[index], PUNI_DBL) phid->motorPositionMax[index] = value; } else if(KEYNAME("PositionMinLimit")) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorPositionMinLimit, PUNI_DBL) phid->motorPositionMinLimit = value; } else if(KEYNAME("PositionMaxLimit")) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorPositionMaxLimit, PUNI_DBL) phid->motorPositionMaxLimit = value; } // initial acceleration limit always unknown so don't keyCount++ else if(KEYNAME("Acceleration")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_DOUBLE_VAL; phid->motorAcceleration[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("AccelerationMax")) { GET_DOUBLE_VAL; INC_KEYCOUNT(accelerationMax, PUNI_DBL) phid->accelerationMax = value; } else if(KEYNAME("AccelerationMin")) { GET_DOUBLE_VAL; INC_KEYCOUNT(accelerationMin, PUNI_DBL) phid->accelerationMin = value; } else if(KEYNAME("Current")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorSensedCurrent[index], PUNI_DBL) phid->motorSensedCurrent[index] = value; if(value != PUNK_DBL) FIRE(CurrentChange, index, value); } else ret = EPHIDGET_OUTOFBOUNDS; } // initial velocity limit always unknown so don't keyCount++ else if(KEYNAME("VelocityLimit")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_DOUBLE_VAL; phid->motorVelocity[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("Velocity")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(motorVelocityEcho[index], PUNI_DBL) phid->motorVelocityEcho[index] = value; if(value != PUNK_DBL) FIRE(VelocityChange, index, servo_us_to_degrees_vel(phid->servoParams[index], value, PTRUE)); } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("VelocityMax")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(velocityMax[index], PUNI_DBL) phid->velocityMax[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("VelocityMaxLimit")) { GET_DOUBLE_VAL; INC_KEYCOUNT(velocityMaxLimit, PUNI_DBL) phid->velocityMaxLimit = value; } else if(KEYNAME("VelocityMin")) { GET_DOUBLE_VAL; INC_KEYCOUNT(velocityMin, PUNI_DBL) phid->velocityMin = value; } else if(KEYNAME("Engaged")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_INT_VAL; INC_KEYCOUNT(motorEngagedStateEcho[index], PUNI_BOOL) phid->motorEngagedStateEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("SpeedRampingOn")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_INT_VAL; INC_KEYCOUNT(motorSpeedRampingStateEcho[index], PUNI_BOOL) phid->motorSpeedRampingStateEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("Stopped")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { GET_INT_VAL; unsigned char lastStoppedState = phid->motorStoppedState[index]; INC_KEYCOUNT(motorStoppedState[index], PUNI_BOOL) phid->motorStoppedState[index] = value; //If changed, re-run position/velocity events, so the stopped change will be noticed if(lastStoppedState != value) { if(phid->motorVelocityEcho[index] != PUNK_DBL) FIRE(VelocityChange, index, servo_us_to_degrees_vel(phid->servoParams[index], phid->motorVelocityEcho[index], PTRUE)); if(phid->motorPositionEcho[index] != PUNK_DBL) FIRE(PositionChange, index, servo_us_to_degrees(phid->servoParams[index], phid->motorPositionEcho[index], PTRUE)); } } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("ServoParameters")) { if(CHKINDEX(advancedservo.numMotors, ADVSERVO_MAXSERVOS)) { CPhidgetServoParameters params; char *endptr; params.servoType = strtol(state, &endptr, 10); params.min_us = strtod(endptr+1, &endptr); params.max_us = strtod(endptr+1, &endptr); params.us_per_degree = strtod(endptr+1, &endptr); params.max_us_per_s = strtod(endptr+1, NULL); params.state = PTRUE; INC_KEYCOUNT(servoParams[index].state, PUNI_BOOL) phid->servoParams[index] = params; } else ret = EPHIDGET_OUTOFBOUNDS; } else{ PWC_BAD_SETTYPE(AdvancedServo); } return ret; } PWC_SETKEYS(Analog) if(KEYNAME("NumberOfOutputs")) { GET_INT_VAL; phid->phid.attr.analog.numAnalogOutputs = value; phid->phid.keyCount++; } else if(KEYNAME("Voltage")) { if(CHKINDEX(analog.numAnalogOutputs, ANALOG_MAXOUTPUTS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(voltageEcho[index], PUNI_DBL) phid->voltageEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("VoltageMin")) { GET_DOUBLE_VAL; INC_KEYCOUNT(voltageMin, PUNI_DBL) phid->voltageMin = value; } else if(KEYNAME("VoltageMax")) { GET_DOUBLE_VAL; INC_KEYCOUNT(voltageMax, PUNI_DBL) phid->voltageMax = value; } else if(KEYNAME("Enabled")) { if(CHKINDEX(analog.numAnalogOutputs, ANALOG_MAXOUTPUTS)) { GET_INT_VAL; INC_KEYCOUNT(enabledEcho[index], PUNI_BOOL) phid->enabledEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else{ PWC_BAD_SETTYPE(Analog); } return ret; } PWC_SETKEYS(Bridge) if(KEYNAME("NumberOfInputs")) { GET_INT_VAL; phid->phid.attr.bridge.numBridgeInputs = value; phid->phid.keyCount++; } else if(KEYNAME("DataRate")) { GET_INT_VAL; INC_KEYCOUNT(dataRateEcho, PUNI_INT) phid->dataRateEcho = value; } else if(KEYNAME("DataRateMin")) { GET_INT_VAL; INC_KEYCOUNT(dataRateMin, PUNI_INT) phid->dataRateMin = value; } else if(KEYNAME("DataRateMax")) { GET_INT_VAL; INC_KEYCOUNT(dataRateMax, PUNI_INT) phid->dataRateMax = value; } else if(KEYNAME("Enabled")) { if(CHKINDEX(bridge.numBridgeInputs, BRIDGE_MAXINPUTS)) { GET_INT_VAL; INC_KEYCOUNT(enabledEcho[index], PUNI_BOOL) phid->enabledEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("BridgeMax")) { if(CHKINDEX(bridge.numBridgeInputs, BRIDGE_MAXINPUTS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(bridgeMax[index], PUNI_DBL) phid->bridgeMax[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("BridgeMin")) { if(CHKINDEX(bridge.numBridgeInputs, BRIDGE_MAXINPUTS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(bridgeMin[index], PUNI_DBL) phid->bridgeMin[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("Gain")) { if(CHKINDEX(bridge.numBridgeInputs, BRIDGE_MAXINPUTS)) { GET_INT_VAL; INC_KEYCOUNT(gainEcho[index], PHIDGET_BRIDGE_GAIN_UNKNOWN) phid->gainEcho[index] = value; } else ret = EPHIDGET_OUTOFBOUNDS; } else if(KEYNAME("BridgeValue")) { if(CHKINDEX(bridge.numBridgeInputs, BRIDGE_MAXINPUTS)) { GET_DOUBLE_VAL; INC_KEYCOUNT(bridgeValue[index], PUNI_DBL) phid->bridgeValue[index] = value; if(value != PUNK_DBL) FIRE(BridgeData, index, value); } else ret = EPHIDGET_OUTOFBOUNDS; } else{ PWC_BAD_SETTYPE(Bridge); } return ret; } PWC_SETKEYS(Encoder) if(KEYNAME("NumberOfEncoders")) { GET_INT_VAL; phid->phid.attr.encoder.numEncoders = value; phid->phid.keyCount++; } else if(KEYNAME("NumberOfInputs")) { GET_INT_VAL; phid->phid.attr.encoder.numInputs = value; phid->phid.keyCount++; } // initial Input is unknown so don't keyCount++ else if(KEYNAME("Input")) { if(CHKINDEX(encoder.numInputs, ENCODER_MAXINPUTS)) { GET_INT_VAL; phid->inputState[index] = value; if(value != PUNK_BOOL) FIRE(InputChange, index, value); } else ret = EPHIDGET_OUTOFBOUNDS; } // initial Position is unknown so don't keyCount++ else if(KEYNAME("ResetPosition")) { if(CHKINDEX(encoder.numEncoders, ENCODER_MAXENCODERS)) { GET_INT_VAL;
# Channel table for Antonio Carlos - SC - Brazil
# Source: http://portalbsd.com.br/novo/terrestres_channels.php?channels=1468
# Physical channel 21
[Rede Vida]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 515142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 30
[RIC SC]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 569142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 31
[Record News]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 575142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 32
[Band SC]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 581142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 33
[RBS SC]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 587142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 42
[TV Aparecida]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 641142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 61
[TV Câmara, TV Senado, TV AL]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 755142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0
# Physical channel 63
[TV UFSC]
DELIVERY_SYSTEM = ISDBT
BANDWIDTH_HZ = 6000000
FREQUENCY = 767142857
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
INVERSION = AUTO
GUARD_INTERVAL = AUTO
TRANSMISSION_MODE = AUTO
ISDBT_LAYER_ENABLED = 7
ISDBT_SOUND_BROADCASTING = 0
ISDBT_SB_SUBCHANNEL_ID = 0
ISDBT_SB_SEGMENT_IDX = 0
ISDBT_SB_SEGMENT_COUNT = 0
ISDBT_LAYERA_FEC = AUTO
ISDBT_LAYERA_MODULATION = QAM/AUTO
ISDBT_LAYERA_SEGMENT_COUNT = 0
ISDBT_LAYERA_TIME_INTERLEAVING = 0
ISDBT_LAYERB_FEC = AUTO
ISDBT_LAYERB_MODULATION = QAM/AUTO
ISDBT_LAYERB_SEGMENT_COUNT = 0
ISDBT_LAYERB_TIME_INTERLEAVING = 0
ISDBT_LAYERC_FEC = AUTO
ISDBT_LAYERC_MODULATION = QAM/AUTO
ISDBT_LAYERC_SEGMENT_COUNT = 0
ISDBT_LAYERC_TIME_INTERLEAVING = 0