123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- /**
- ******************************************************************************
- * @file stm320518_eval_cec.h
- * @author MCD Application Team
- * @version V1.0.0
- * @date 20-April-2012
- * @brief This file contains all the functions prototypes for the stm320518_eval_cec
- * firmware driver.
- ******************************************************************************
- * @attention
- *
- * <h2><center>© COPYRIGHT 2012 STMicroelectronics</center></h2>
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.st.com/software_license_agreement_liberty_v2
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __STM320518_EVAL_CEC_H
- #define __STM320518_EVAL_CEC_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "stm320518_eval.h"
- /** @addtogroup Utilities
- * @{
- */
- /** @addtogroup STM32_EVAL
- * @{
- */
- /** @addtogroup STM320518_EVAL
- * @{
- */
- /** @defgroup STM320518_EVAL_CEC
- * @{
- */
- /** @defgroup STM320518_EVAL_CEC_Exported_Types
- * @{
- */
- typedef enum
- {
- HDMI_CEC_RX_OVERRUN = (1), /*!< CEC Receive overrun Error */
- HDMI_CEC_RX_BIT_RISING = (2), /*!< CEC Rx Bit Rising Error */
- HDMI_CEC_RX_SHORT_BIT_PERIOD = (3), /*!< CEC Rx Short Bit Period Error */
- HDMI_CEC_RX_LONG_BIT_PERIOD = (4), /*!< CEC Rx Long Bit Period Error */
- HDMI_CEC_RX_ACKNOWLEDGE = (5), /*!< CEC RX Acknowledge Error */
- HDMI_CEC_ARBITRATION_LOST = (6), /*!< Arbitration Lost Error */
- HDMI_CEC_TX_UNDERRUN = (7), /*!< CEC Transmit Underrun Error */
- HDMI_CEC_TX_ERROR = (8), /*!< CEC Transmit Error */
- HDMI_CEC_TX_ACKNOWLEDGE = (9), /*!< CEC TX Acknowledge Error */
- HDMI_CEC_DEVICE_UNREGISTRED = (10), /*!< CEC Device Unregistered */
- HDMI_CEC_TIMEOUT = (11), /*!< CEC TimeOut */
- HDMI_CEC_OK = (12) /*!< CEC OK */
- }HDMI_CEC_Error;
- typedef struct
- {
- uint8_t PhysicalAddress_A;
- uint8_t PhysicalAddress_B;
- uint8_t PhysicalAddress_C;
- uint8_t PhysicalAddress_D;
- uint8_t LogicalAddress;
- uint8_t DeviceType;
- }HDMI_CEC_Map;
- #define HDMI_CEC_TX_MESSAGE_LENGTH_MAX ((uint32_t)0x0000000E)
- #define HDMI_CEC_TIMEOUT_VALUE ((uint32_t)0x001FFFFF)
- /**
- * @brief CEC Init Structure definition
- */
- typedef struct
- {
- __IO uint8_t Header;
- __IO uint8_t Opcode;
- __IO uint8_t Operande[HDMI_CEC_TX_MESSAGE_LENGTH_MAX];
- __IO uint8_t TxMessageLength;
- __IO uint8_t RxMessageLength;
- }HDMI_CEC_Message;
- /**
- * @}
- */
- /** @defgroup STM320518_EVAL_CEC_Exported_Constants
- * @{
- */
- /**
- * @brief CEC device types
- */
- #define HDMI_CEC_TV 0x00
- #define HDMI_CEC_RECORDING 0x01
- #define HDMI_CEC_TUNER 0x03
- #define HDMI_CEC_PLAYBACK 0x04
- #define HDMI_CEC_AUDIOSYSTEM 0x05
- /**
- * @brief HDMI CEC I2C Interface pins
- */
- #define HDMI_CEC_I2C_SCL_PIN GPIO_Pin_6
- #define HDMI_CEC_I2C_SDA_PIN GPIO_Pin_7
- #define HDMI_CEC_I2C_SCL_PIN_SOURCE GPIO_PinSource6
- #define HDMI_CEC_I2C_SDA_PIN_SOURCE GPIO_PinSource7
- #define HDMI_CEC_I2C_GPIO_PORT GPIOB
- #define HDMI_CEC_I2C_GPIO_CLK RCC_AHBPeriph_GPIOB
- #define HDMI_CEC_I2C I2C1
- #define HDMI_CEC_I2C_CLK RCC_APB1Periph_I2C1
- #define HDMI_CEC_SINK_I2C_SCL_PIN GPIO_Pin_6
- #define HDMI_CEC_SINK_I2C_SDA_PIN GPIO_Pin_7
- #define HDMI_CEC_SINK_I2C_SCL_PIN_SOURCE GPIO_PinSource6
- #define HDMI_CEC_SINK_I2C_SDA_PIN_SOURCE GPIO_PinSource7
- #define HDMI_CEC_SINK_I2C_GPIO_PORT GPIOF
- #define HDMI_CEC_SINK_I2C_GPIO_CLK RCC_AHBPeriph_GPIOF
- #define HDMI_CEC_SINK_I2C I2C2
- #define HDMI_CEC_SINK_I2C_CLK RCC_APB1Periph_I2C2
- /**
- * @brief HDMI CEC HPD (Hot Plug Detect) Interface pin
- */
- #define HDMI_CEC_HPD_SINK_PIN GPIO_Pin_11
- #define HDMI_CEC_HPD_SINK_GPIO_PORT GPIOA
- #define HDMI_CEC_HPD_SINK_GPIO_CLK RCC_AHBPeriph_GPIOA
- /**
- * @brief HDMI CEC HPD (Hot Plug Detect) Interface pin
- */
- #define HDMI_CEC_HPD_SOURCE_PIN GPIO_Pin_8
- #define HDMI_CEC_HPD_SOURCE_GPIO_PORT GPIOA
- #define HDMI_CEC_HPD_SOURCE_GPIO_CLK RCC_AHBPeriph_GPIOA
- /**
- * @brief HDMI CEC Interface pin
- */
- #define HDMI_CEC_LINE_PIN GPIO_Pin_10
- #define HDMI_CEC_LINE_GPIO_PORT GPIOB
- #define HDMI_CEC_LINE_GPIO_CLK RCC_AHBPeriph_GPIOB
- #define HDMI_CEC_I2C_TIMING 0x00330E10
- #define HDMI_CEC_I2C_SLAVE_ADDRESS7 0xA0
- /**
- * @brief HDMI CEC Root (Mainly for TV with a fixed physical address (0.0.0.0))
- * If you want to configure the STM320518-EVAL board as CEC Root (Sink)
- * change the following define to 0x1
- */
- #define HDMI_CEC_ROOT 0x00
- /**
- * @brief To select if the DDC Channel will be used for physical address discovery
- * or not. To use the DDC Channel to read the EDID structure uncomment
- * the following line.
- * If the device is configured as HMDI source it should read his own physical
- * address from the sink that is connected to.
- */
- //#define HDMI_CEC_USE_DDC
- /**
- * @brief CEC version: V1.4
- */
- #define HDMI_CEC_VERSION 0x05 /* 0x04 For CEC version: V1.3.a */
- /**
- * @brief Reason for Abort feature
- */
- #define HDMI_CEC_UNRECOGNIZED_OPCODE 0x00
- #define HDMI_CEC_NOT_CORRECT_MODETORESPOND 0x01
- #define HDMI_CEC_CANNOTPROVIDE_SOURCE 0x02
- #define HDMI_CEC_INVALID_OPERAND 0x03
- #define HDMI_CEC_REFUSED 0x04
- /**
- * @brief HDMI CEC specific commands
- */
- #define HDMI_CEC_OPCODE_ACTIVE_SOURCE ((uint8_t) 0x82)
- #define HDMI_CEC_OPCODE_IMAGE_VIEW_ON ((uint8_t) 0x04)
- #define HDMI_CEC_OPCODE_TEXT_VIEW_ON ((uint8_t) 0x0D)
- #define HDMI_CEC_OPCODE_INACTIVE_SOURCE ((uint8_t) 0x9D)
- #define HDMI_CEC_OPCODE_REQUEST_ACTIVE_SOURCE ((uint8_t) 0x85)
- #define HDMI_CEC_OPCODE_ROUTING_CHANGE ((uint8_t) 0x80)
- #define HDMI_CEC_OPCODE_ROUTING_INFORMATION ((uint8_t) 0x81)
- #define HDMI_CEC_OPCODE_SET_STREAM_PATH ((uint8_t) 0x86)
- #define HDMI_CEC_OPCODE_STANDBY ((uint8_t) 0x36)
- #define HDMI_CEC_OPCODE_RECORD_OFF ((uint8_t) 0x0B)
- #define HDMI_CEC_OPCODE_RECORD_ON ((uint8_t) 0x09)
- #define HDMI_CEC_OPCODE_RECORD_STATUS ((uint8_t) 0x0A)
- #define HDMI_CEC_OPCODE_RECORD_TV_SCREEN ((uint8_t) 0x0F)
- #define HDMI_CEC_OPCODE_CLEAR_ANALOGUE_TIMER ((uint8_t) 0x33)
- #define HDMI_CEC_OPCODE_CLEAR_DIGITAL_TIMER ((uint8_t) 0x99)
- #define HDMI_CEC_OPCODE_CLEAR_EXTERNAL_TIMER ((uint8_t) 0xA1)
- #define HDMI_CEC_OPCODE_SET_ANALOGUE_TIMER ((uint8_t) 0x34)
- #define HDMI_CEC_OPCODE_SET_DIGITAL_TIMER ((uint8_t) 0x97)
- #define HDMI_CEC_OPCODE_SET_EXTERNAL_TIMER ((uint8_t) 0xA2)
- #define HDMI_CEC_OPCODE_SET_TIMER_PROGRAM_TITLE ((uint8_t) 0x67)
- #define HDMI_CEC_OPCODE_TIMER_CLEARED_STATUS ((uint8_t) 0x43)
- #define HDMI_CEC_OPCODE_TIMER_STATUS ((uint8_t) 0x35)
- #define HDMI_CEC_OPCODE_CEC_VERSION ((uint8_t) 0x9E)
- #define HDMI_CEC_OPCODE_GET_CEC_VERSION ((uint8_t) 0x9F)
- #define HDMI_CEC_OPCODE_GIVE_PHYSICAL_ADDRESS ((uint8_t) 0x83)
- #define HDMI_CEC_OPCODE_GET_MENU_LANGUAGE ((uint8_t) 0x91)
- #define HDMI_CEC_OPCODE_REPORT_PHYSICAL_ADDRESS ((uint8_t) 0x84)
- #define HDMI_CEC_OPCODE_SET_MENU_LANGUAGE ((uint8_t) 0x32)
- #define HDMI_CEC_OPCODE_DECK_CONTROL ((uint8_t) 0x42)
- #define HDMI_CEC_OPCODE_DECK_STATUS ((uint8_t) 0x1B)
- #define HDMI_CEC_OPCODE_GIVE_DECK_STATUS ((uint8_t) 0x1A)
- #define HDMI_CEC_OPCODE_PLAY ((uint8_t) 0x41)
- #define HDMI_CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS ((uint8_t) 0x08)
- #define HDMI_CEC_OPCODE_SELECT_ANALOGUE_SERVICE ((uint8_t) 0x92)
- #define HDMI_CEC_OPCODE_SELECT_DIGITAL_SERVICE ((uint8_t) 0x93)
- #define HDMI_CEC_OPCODE_TUNER_DEVICE_STATUS ((uint8_t) 0x07)
- #define HDMI_CEC_OPCODE_TUNER_STEP_DECREMENT ((uint8_t) 0x06)
- #define HDMI_CEC_OPCODE_TUNER_STEP_INCREMENT ((uint8_t) 0x05)
- #define HDMI_CEC_OPCODE_DEVICE_VENDOR_ID ((uint8_t) 0x87)
- #define HDMI_CEC_OPCODE_GIVE_DEVICE_VENDOR_ID ((uint8_t) 0x8C)
- #define HDMI_CEC_OPCODE_VENDOR_COMMAND ((uint8_t) 0x89)
- #define HDMI_CEC_OPCODE_VENDOR_COMMAND_WITH_ID ((uint8_t) 0xA0)
- #define HDMI_CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN ((uint8_t) 0x8A)
- #define HDMI_CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP ((uint8_t) 0x8B)
- #define HDMI_CEC_OPCODE_SET_OSD_STRING ((uint8_t) 0x64)
- #define HDMI_CEC_OPCODE_GIVE_OSD_NAME ((uint8_t) 0x46)
- #define HDMI_CEC_OPCODE_SET_OSD_NAME ((uint8_t) 0x47)
- #define HDMI_CEC_OPCODE_MENU_REQUEST ((uint8_t) 0x8D)
- #define HDMI_CEC_OPCODE_MENU_STATUS ((uint8_t) 0x8E)
- #define HDMI_CEC_OPCODE_USER_CONTROL_PRESSED ((uint8_t) 0x44)
- #define HDMI_CEC_OPCODE_USER_CONTROL_RELEASED ((uint8_t) 0x45)
- #define HDMI_CEC_OPCODE_GIVE_DEVICE_POWER_STATUS ((uint8_t) 0x8F)
- #define HDMI_CEC_OPCODE_REPORT_POWER_STATUS ((uint8_t) 0x90)
- #define HDMI_CEC_OPCODE_FEATURE_ABORT ((uint8_t) 0x00)
- #define HDMI_CEC_OPCODE_ABORT ((uint8_t) 0xFF)
- #define HDMI_CEC_OPCODE_GIVE_AUDIO_STATUS ((uint8_t) 0x71)
- #define HDMI_CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS ((uint8_t) 0x7D)
- #define HDMI_CEC_OPCODE_REPORT_AUDIO_STATUS ((uint8_t) 0x7A)
- #define HDMI_CEC_OPCODE_SET_SYSTEM_AUDIO_MODE ((uint8_t) 0x72)
- #define HDMI_CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST ((uint8_t) 0x70)
- #define HDMI_CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS ((uint8_t) 0x7E)
- #define HDMI_CEC_OPCODE_SET_AUDIO_RATE ((uint8_t) 0x9A)
- /**
- * @}
- */
- /** @defgroup STM320518_EVAL_CEC_Exported_Macros
- * @{
- */
- /**
- * @}
- */
- /** @defgroup STM32100B_EVAL_CEC_Exported_Macros
- * @{
- */
- /* HDMI_CEC_HPD: HDMI HPD pin low */
- #define HDMI_CEC_HPD_LOW() GPIO_ResetBits(HDMI_CEC_HPD_GPIO_PORT, HDMI_CEC_HPD_PIN)
- /* HDMI_CEC_HPD: HDMI HPD pin high */
- #define HDMI_CEC_HPD_HIGH() GPIO_SetBits(HDMI_CEC_HPD_SINK_GPIO_PORT, HDMI_CEC_HPD_SINK_PIN)
- /**
- * @}
- */
- /** @defgroup STM320518_EVAL_CEC_Exported_Functions
- * @{
- */
- HDMI_CEC_Error HDMI_CEC_Init(void);
- HDMI_CEC_Error HDMI_CEC_TransmitMessage(HDMI_CEC_Message *HDMI_CEC_TX_MessageStructure);
- HDMI_CEC_Error HDMI_CEC_GetErrorStatus (void);
- void HDMI_CEC_ProcessIRQSrc(void);
- HDMI_CEC_Error HDMI_CEC_ReportPhysicalAddress(void);
- void HDMI_CEC_CommandCallBack(void);
- HDMI_CEC_Error HDMI_CEC_CheckConnectedDevices(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __STM320518_EVAL_CEC_H */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|