#ifndef __GANYMEDE_H__ #define __GANYMEDE_H__ #include "type.h" #include "user.h" #include "error.h" #include "register.h" #include "variable.h" #include "cmd.h" #include "standard.h" #include "demodulatorextend.h" /** releaseExternalRemove */ #include "version.h" /** * Write one byte (8 bits) to a specific register in demodulator. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the address of the register to be written. * @param value the value to be written. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Set the value of register 0xA000 in demodulator to 0. * error = Demodulator_writeRegister ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, 0); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_writeRegister ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, IN Byte value ); /** * Write a sequence of bytes to the contiguous registers in demodulator. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 5. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the start address of the registers to be written. * @param bufferLength the number of registers to be written. * @param buffer a byte array which is used to store values to be written. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3] = { 0x00, 0x01, 0x02 }; * Ganymede ganymede; * * // Set the value of register 0xA000 in demodulator to 0. * // Set the value of register 0xA001 in demodulator to 1. * // Set the value of register 0xA002 in demodulator to 2. * error = Demodulator_writeRegisters ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_writeRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Write a sequence of bytes to the contiguous registers in slave device. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 6 (one more byte to specify tuner address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param registerAddress the start address of the registers to be read. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3] = { 0x00, 0x01, 0x02 }; * Ganymede ganymede; * * // Set the value of register 0x0000 in tuner to 0. * // Set the value of register 0x0001 in tuner to 1. * // Set the value of register 0x0002 in tuner to 2. * error = Demodulator_writeTunerRegistersWithAddress ((Demodulator*) &ganymede, 0, 0x38, 0x00, 1, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_writeTunerRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Word registerAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Write a sequence of bytes to the contiguous registers in slave device * through specified interface (1, 2, 3). * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 6 (one more byte to specify tuner address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param interfaceIndex the index of interface. The possible values are * 1~3. * @param slaveAddress the I2c address of slave device. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. */ Dword Demodulator_writeGenericRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Byte interfaceIndex, IN Byte slaveAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Write a sequence of bytes to the contiguous cells in the EEPROM. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 5 (firmware will detect EEPROM address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param registerAddress the start address of the cells to be written. * @param registerAddressLength the valid bytes of registerAddress. * @param bufferLength the number of cells to be written. * @param buffer a byte array which is used to store values to be written. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3] = { 0x00, 0x01, 0x02 }; * Ganymede ganymede; * * // Set the value of cell 0x0000 in EEPROM to 0. * // Set the value of cell 0x0001 in EEPROM to 1. * // Set the value of cell 0x0002 in EEPROM to 2. * error = Demodulator_writeEepromValues ((Demodulator*) &ganymede, 0, 0x0000, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_writeEepromValues ( IN Demodulator* demodulator, IN Byte chip, IN Word registerAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Modify bits in the specific register. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the address of the register to be written. * @param position the start position of bits to be modified (0 means the * LSB of the specifyed register). * @param length the length of bits. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Modify the LSB of register 0xA000 in demodulator to 0. * error = Demodulator_writeRegisterBits ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, 0, 1, 0); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_writeRegisterBits ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, IN Byte position, IN Byte length, IN Byte value ); /** * Read one byte (8 bits) from a specific register in demodulator. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the address of the register to be read. * @param value the pointer used to store the value read from demodulator * register. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte value; * Ganymede ganymede; * * // Get the value of register 0xA000 in demodulator. * error = Demodulator_readRegister ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, &value); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * printf ("The value of 0xA000 is %2x", value); **/ Dword Demodulator_readRegister ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, OUT Byte* value ); /** * Read a sequence of bytes from the contiguous registers in demodulator. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 5. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the address of the register to be read. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3]; * Ganymede ganymede; * * // Get the value of register 0xA000, 0xA001, 0xA002 in demodulator. * error = Demodulator_readRegisters ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * printf ("The value of 0xA000 is %2x", buffer[0]); * printf ("The value of 0xA001 is %2x", buffer[1]); * printf ("The value of 0xA002 is %2x", buffer[2]); **/ Dword Demodulator_readRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, IN Byte bufferLength, OUT Byte* buffer ); /** * Read a sequence of bytes from the contiguous registers in tuner. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 6 (one more byte to specify tuner address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param registerAddress the start address of the registers to be read. * @param registerAddressLength the valid bytes of registerAddress. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3]; * Ganymede ganymede; * * // Get the value of register 0x0000, 0x0001, 0x0002 in tuner. * error = Demodulator_readTunerRegisters ((Demodulator*) &ganymede, 0, 0x0000, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * printf ("The value of 0x0000 is %2x", buffer[0]); * printf ("The value of 0x0001 is %2x", buffer[1]); * printf ("The value of 0x0002 is %2x", buffer[2]); **/ Dword Demodulator_readTunerRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Word registerAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Read a sequence of bytes from the contiguous registers in slave device * through specified interface (1, 2, 3). * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 6 (one more byte to specify tuner address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param interfaceIndex the index of interface. The possible values are * 1~3. * @param slaveAddress the I2c address of slave device. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. */ Dword Demodulator_readGenericRegisters ( IN Demodulator* demodulator, IN Byte chip, IN Byte interfaceIndex, IN Byte slaveAddress, IN Byte bufferLength, IN Byte* buffer ); /** * Read a sequence of bytes from the contiguous cells in the EEPROM. * The maximum burst size is restricted by the capacity of bus. If bus * could transfer N bytes in one cycle, then the maximum value of * bufferLength would be N - 5 (firmware will detect EEPROM address). * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param registerAddress the start address of the cells to be read. * @param registerAddressLength the valid bytes of registerAddress. * @param bufferLength the number of cells to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte buffer[3]; * Ganymede ganymede; * * // Get the value of cell 0x0000, 0x0001, 0x0002 in EEPROM. * error = Demodulator_readEepromValues ((Demodulator*) &ganymede, 0, 0x0000, 3, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * printf ("The value of 0x0000 is %2x", buffer[0]); * printf ("The value of 0x0001 is %2x", buffer[1]); * printf ("The value of 0x0002 is %2x", buffer[2]); **/ Dword Demodulator_readEepromValues ( IN Demodulator* demodulator, IN Byte chip, IN Word registerAddress, IN Byte bufferLength, OUT Byte* buffer ); /** * Read bits of the specified register. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param processor The processor of specified register. Because each chip * has two processor so user have to specify the processor. The * possible values are Processor_LINK and Processor_OFDM. * @param registerAddress the address of the register to be read. * @param position the start position of bits to be read (0 means the * LSB of the specifyed register). * @param length the length of bits. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte value; * Ganymede ganymede; * * // Read the LSB of register 0xA000 in demodulator. * error = Demodulator_readRegisterBits ((Demodulator*) &ganymede, 0, Processor_LINK, 0xA000, 0, 1, &value); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * printf ("The value of LSB of 0xA000 is %2x", value); **/ Dword Demodulator_readRegisterBits ( IN Demodulator* demodulator, IN Byte chip, IN Processor processor, IN Dword registerAddress, IN Byte position, IN Byte length, OUT Byte* value ); /** * Get the version of hardware. * * @param demodulator the handle of demodulator. * @param version the version of hardware. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Dword version; * Ganymede ganymede; * * // Add PID to PID filter. * error = Demodulator_getHardwareVersion ((Demodulator*) &ganymede, &version); * if (error) * printf ("Error Code = %X", error); * else * printf ("The version of hardware is : %X", version); **/ Dword Demodulator_getHardwareVersion ( IN Demodulator* demodulator, OUT Dword* version ); /** * Get the version of firmware. * * @param demodulator the handle of demodulator. * @param version the version of firmware. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Dword version; * Ganymede ganymede; * * // Get the version of Link layer firmware. * error = Demodulator_getFirmwareVersion ((Demodulator*) &ganymede, Processor_LINK, &version); * if (error) * printf ("Error Code = %X", error); * else * printf ("The version of firmware is : %X", version); **/ Dword Demodulator_getFirmwareVersion ( IN Demodulator* demodulator, IN Processor processor, OUT Dword* version ); /** * Get post VitBer * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param postErrorCount error count after viterbi * @param postBitCount total count after viterbi * @param abortCount error count after reed-soloman * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_getPostVitBer ( IN Demodulator* demodulator, IN Byte chip, OUT Dword* postErrorCount, /** 24 bits */ OUT Dword* postBitCount, /** 16 bits */ OUT Word* abortCount ); /** * Get RF AGC gain. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param rfAgc the value of RF AGC. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte rfAgc; * Ganymede ganymede; * * // Set I2C as the control bus. * error = Demodulator_getRfAgcGain ((Demodulator*) &ganymede, 0, rfAgc); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_getRfAgcGain ( IN Demodulator* demodulator, IN Byte chip, OUT Byte* rfAgc ); /** * Get IF AGC. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param ifAgc the value of IF AGC. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte ifAgc; * Ganymede ganymede; * * // Set I2C as the control bus. * error = Demodulator_getIfAgcGain ((Demodulator*) &ganymede, 0, ifAgc); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_getIfAgcGain ( IN Demodulator* demodulator, IN Byte chip, OUT Byte* ifAgc ); /** * Get siganl quality. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. NOTE: When the architecture is set to Architecture_DCA * this parameter is regard as don't care. * @param quality The value of signal quality. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_getSignalQuality ( IN Demodulator* demodulator, IN Byte chip, OUT Byte* quality ); /** * Get signal strength * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param strength The value of signal strength. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_getSignalStrength ( IN Demodulator* demodulator, IN Byte chip, OUT Byte* strength ); /** * Get signal strength in dbm * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param rfpullUpVolt_X10 the pullup voltag of RF multiply 10. * @param ifpullUpVolt_X10 the pullup voltag of IF multiply 10. * @param strengthDbm The value of signal strength in DBm. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_getSignalStrengthDbm ( IN Demodulator* demodulator, IN Byte chip, IN Long rfpullUpVolt_X10, /** RF pull up voltage multiplied by 10 */ IN Long ifpullUpVolt_X10, /** IF pull up voltage multiplied by 10 */ OUT Long* strengthDbm /** DBm */ ); /** * Load the IR table for USB device. * * @param demodulator the handle of demodulator. * @param tableLength The length of IR table. * @param table The content of IR table. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_loadIrTable ( IN Demodulator* demodulator, IN Word tableLength, IN Byte* table ); /** * First, download firmware from host to demodulator. Actually, firmware is * put in firmware.h as a part of source code. Therefore, in order to * update firmware the host have to re-compile the source code. * Second, setting all parameters which will be need at the beginning. * * @param demodulator the handle of demodulator. * @param chipNumber The total number of demodulators. * @param sawBandwidth SAW filter bandwidth in KHz. The possible values * are 6000, 7000, and 8000 (KHz). * @param streamType The format of output stream. * @param architecture the architecture of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Initialize demodulators. * // SAW Filter : 8MHz * // Stream Type : IP Datagram. * error = Demodulator_initialize ((Demodulator*) &ganymede, 1, 8, StreamType_IP_DATAGRAM, Architecture_DCA); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_initialize ( IN Demodulator* demodulator, IN Byte chipNumber, IN Word sawBandwidth, IN StreamType streamType, IN Architecture architecture ); /** * Power off the demodulators. * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Finalize demodulators. * error = Demodulator_finalize ((Demodulator*) &ganymede); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_finalize ( IN Demodulator* demodulator ); /** * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_isTpsLocked ( IN Demodulator* demodulator, IN Byte chip, OUT Bool* locked ); /** * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_isMpeg2Locked ( IN Demodulator* demodulator, IN Byte chip, OUT Bool* locked ); /** * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @param chip The index of demodulator. The possible values are * 0~7. NOTE: When the architecture is set to Architecture_DCA * this parameter is regard as don't care. * @param locked the result of frequency tuning. True if there is * demodulator can lock signal, False otherwise. * @see Demodulator_acquireChannel */ Dword Demodulator_isLocked ( IN Demodulator* demodulator, IN Byte chip, OUT Bool* locked ); /** * Reset demodulator. * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Reset demodulator. * error = Demodulator_reset ((Demodulator*) &ganymede); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_reset ( IN Demodulator* demodulator ); /** * Get channel modulation related information. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param channelModulation The modulation of channel. * @return Error_NO_ERROR: successful, other non-zero error code otherwise. * @example
**/ Dword Demodulator_getChannelModulation ( IN Demodulator* demodulator, IN Byte chip, OUT ChannelModulation* channelModulation ); /** * Specify the bandwidth of channel and tune the channel to the specific * frequency. Afterwards, host could use output parameter dvbH to determine * if there is a DVB-H signal. * In DVB-T mode, after calling this function the output parameter dvbH * should return False and host could use output parameter "locked" to check * if the channel has correct TS output. * In DVB-H mode, after calling this function the output parameter dvbH should * return True and host could start get platform thereafter. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. NOTE: When the architecture is set to Architecture_DCA * this parameter is regard as don't care. * @param bandwidth The channel bandwidth. * DVB-T: 5000, 6000, 7000, and 8000 (KHz). * DVB-H: 5000, 6000, 7000, and 8000 (KHz). * T-DMB: 5000, 6000, 7000, and 8000 (KHz). * FM: 100, and 200 (KHz). * @param frequency the channel frequency in KHz. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Bool locked; * Ganymede ganymede; * * error = Demodulator_acquireChannel ((Demodulator*) &ganymede, 0, 8000, 666000); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * * error = Demodulator_isLocked ((Demodulator*) &ganymede, 0, &locked); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * * if (locked == True) { * // In DVB-T mode. * // Start to process TS * // Because DVB-T could be multiplex with DVB-H * } **/ Dword Demodulator_acquireChannel ( IN Demodulator* demodulator, IN Byte chip, IN Word bandwidth, IN Dword frequency ); /** * Set the output stream type of chip. Because the device could output in * many stream type, therefore host have to choose one type before receive * data. * * Note: After host know all the available channels, and want to change to * specific channel, host have to choose output mode before receive * data. Please refer the example of Demodulator_setStreamType. * * @param demodulator the handle of demodulator. * @param streamType the possible values are * DVB-H: StreamType_DVBH_DATAGRAM * StreamType_DVBH_DATABURST * DVB-T: StreamType_DVBT_DATAGRAM * StreamType_DVBT_PARALLEL * StreamType_DVBT_SERIAL * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * error = Demodulator_setStreamType ((Demodulator*) &ganymede, StreamType_DVBT_PARALLEL) * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_setStreamType ( IN Demodulator* demodulator, IN StreamType streamType ); /** * Set the architecture of chip. When two of our device are using, they could * be operated in Diversity Combine Architecture (DCA) or (PIP). Therefore, * host could decide which mode to be operated. * * @param demodulator the handle of demodulator. * @param architecture the possible values are * Architecture_DCA * Architecture_PIP * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Set architecture. * error = Demodulator_setArchitecture ((Demodulator*) &ganymede, Architecture_DCA) * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_setArchitecture ( IN Demodulator* demodulator, IN Architecture architecture ); /** * Set the counting range for Pre-Viterbi and Post-Viterbi. * * @param demodulator the handle of demodulator. * @param frameCount the number of super frame for Pre-Viterbi. * @param packetUnit the number of packet unit for Post-Viterbi. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Set Viterbi range. * error = Demodulator_setViterbiRange ((Demodulator*) &ganymede, 0, 1, 10000); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_setViterbiRange ( IN Demodulator* demodulator, IN Byte chip, IN Byte superFrameCount, IN Word packetUnit ); /** * Get the counting range for Pre-Viterbi and Post-Viterbi. * * @param demodulator the handle of demodulator. * @param frameCount the number of super frame for Pre-Viterbi. * @param packetUnit the number of packet unit for Post-Viterbi. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Byte superFrameCount; * Word packetUnit; * Ganymede ganymede; * * // Set Viterbi range. * error = Demodulator_getViterbiRange ((Demodulator*) &ganymede, 0, &superFrameCount, &packetUnit); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_getViterbiRange ( IN Demodulator* demodulator, IN Byte chip, IN Byte* superFrameCount, IN Word* packetUnit ); /** * Get the statistic values of demodulator, it includes Pre-Viterbi BER, * Post-Viterbi BER, Abort Count, Signal Presented Flag, Signal Locked Flag, * Signal Quality, Signal Strength, Delta-T for DVB-H time slicing. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param statistic the structure that store all statistic values. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Statistic statistic; * double preBer; * double postBer; * Ganymede ganymede; * * // Set statistic range. * error = Demodulator_getStatistic ((Demodulator*) &ganymede, 0, &statistic); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * preBer = (double) statistic.preVitErrorCount / (double) statistic.preVitBitCount; * printf ("Pre-Viterbi BER = %f\n", preBer); * postBer = (double) statistic.postVitErrorCount / (double) statistic.postVitBitCount; * printf ("Post-Viterbi BER = %f\n", postBer); * printf ("Abort Count = %d\n", statistic.abortCount); * if (statistic.signalPresented == True) * printf ("Signal Presented = True\n"); * else * printf ("Signal Presented = False\n"); * if (statistic.signalLocked == True) * printf ("Signal Locked = True\n"); * else * printf ("Signal Locked = False\n"); * printf ("Signal Quality = %d\n", statistic.signalQuality); * printf ("Signal Strength = %d\n", statistic.signalStrength); **/ Dword Demodulator_getStatistic ( IN Demodulator* demodulator, IN Byte chip, OUT Statistic* statistic ); /** * Get the type of interrupts. * * @param demodulator the handle of demodulator. * @param interrupts the type of interrupts. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Interrupt interrupts; * Ganymede ganymede; * * // Get the type of interrupts. * error = Demodulator_getInterrupts ((Demodulator*) &ganymede, &interrupts); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); * if (interrupts & Interrupt_VERSION) { * // Get IP version * } * if (interrupts & Interrupt_DVBH) { * // Get DVB-H Data * } * if (interrupts & Interrupt_DVBT) { * // Get DVB-T Data * } * if (interrupts & Interrupt_SIPSI) { * // Get SI/PSI * } **/ Dword Demodulator_getInterrupts ( IN Demodulator* demodulator, OUT Interrupts* interrupts ); /** * Clear interrupts flag. * * @param demodulator the handle of demodulator. * @param interrupts interrupts flag. * @param packetUnit the number of packet unit for Post-Viterbi. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * // Set statistic range. * error = Demodulator_clearInterrupt ((Demodulator*) &ganymede, Interrupt_SIPSI); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_clearInterrupt ( IN Demodulator* demodulator, IN Interrupt interrupt ); /** * Get the length of Data * In DVB-T mode, data length should always equals 2K, * In DVB-H mode, data length would be the length of IP datagram. * NOTE: data can't be transfer via I2C bus, in order to transfer data * host must provide SPI bus. * * @param demodulator the handle of demodulator. * @param dataLength the length of data. * @param valid True if the data length is valid. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @see Demodulator_addIp */ Dword Demodulator_getDataLength ( IN Demodulator* demodulator, OUT Dword* dataLength, OUT Bool* valid ); /** * Get the IP datagram of Data. * * @param demodulator the handle of demodulator. * @param bufferLength the length of buffer. * @param buffer buffer used to get Data. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @see Demodulator_addIp */ Dword Demodulator_getData ( IN Demodulator* demodulator, IN Dword bufferLength, OUT Byte* buffer ); /** * Get datagram from device. * * @param demodulator the handle of demodulator. * @param bufferLength the number of registers to be read. * @param buffer a byte array which is used to store values to be read. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @return Error_BUFFER_INSUFFICIENT: if buffer is too small. * @example
* Dword error = Error_NO_ERROR; * Word bufferLength; * Byte buffer[4096]; * Ganymede ganymede; * * bufferLength = 4096; * error = Demodulator_getDatagram ((Demodulator*) &ganymede, &bufferLength, buffer); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_getDatagram ( IN Demodulator* demodulator, OUT Dword* bufferLength, OUT Byte* buffer ); /** * * @param demodulator the handle of demodulator. * @param code the value of IR raw code, the size should be 4 or 6, * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_getIrCode ( IN Demodulator* demodulator, OUT Dword* code ); /** * Return to boot code * * @param demodulator the handle of demodulator. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_reboot ( IN Demodulator* demodulator ); /** * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param contorl 1: Power up, 0: Power down; * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_controlPowerSaving ( IN Demodulator* demodulator, IN Byte chip, IN Byte control ); /** * * @param demodulator the handle of demodulator. * @param contorl 1: Power up, 0: Power down; * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_controlTunerPowerSaving ( IN Demodulator* demodulator, IN Byte control ); /** * Control PID fileter * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param contorl 0: Disable, 1: Enable. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
**/ Dword Demodulator_controlPidFilter ( IN Demodulator* demodulator, IN Byte chip, IN Byte control ); /** * Reset PID filter. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Ganymede ganymede; * * error = Demodulator_resetPidFilter ((Demodulator*) &ganymede, 0); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_resetPidFilter ( IN Demodulator* demodulator, IN Byte chip ); /** * Add PID to PID filter. * * @param demodulator the handle of demodulator. * @param chip The index of demodulator. The possible values are * 0~7. * @param index the index of PID filter. * @param pid the PID that will be add to PID filter. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @example
* Dword error = Error_NO_ERROR; * Pid pid; * Ganymede ganymede; * * pid.value = 0x0000; * * // Add PID to PID filter. * error = Demodulator_addPidToFilter ((Demodulator*) &ganymede, 0, 1, pid); * if (error) * printf ("Error Code = %X", error); * else * printf ("Success"); **/ Dword Demodulator_addPidToFilter ( IN Demodulator* demodulator, IN Byte chip, IN Byte index, IN Pid pid ); /** * Set datagram burst size. * * @param demodulator the handle of demodulator. * @param burstSize the burst size. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @return Error_NOT_SUPPORT: if the burst size is not support. */ Dword Demodulator_setBurstSize ( IN Demodulator* demodulator, IN BurstSize burstSize ); /** * Get datagram burst size. * * @param demodulator the handle of demodulator. * @param burstSize the burst size. * @return Error_NO_ERROR: successful, non-zero error code otherwise. * @return Error_NOT_SUPPORT: if the burst size is not support. */ Dword Demodulator_getBurstSize ( IN Demodulator* demodulator, IN BurstSize* burstSize ); #endif