/**
  @page CEC_ListenMode  CEC Receive messages to different destination example
  
  @verbatim
  ******************** (C) COPYRIGHT 2014 STMicroelectronics *******************
  * @file    CEC/CEC_ListenMode/readme.txt 
  * @author  MCD Application Team
  * @version V1.4.0
  * @date    24-July-2014
  * @brief   Description of the CEC Receive messages to different destination example.
  ******************************************************************************
  *
  * 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.
  *
  ******************************************************************************
   @endverbatim

@par Example Description 

This example provides a basic communication, using interrupts, between two HDMI-CEC
devices and an spy CEC device which receives messages addressed to different destination. 
The first and second CEC devices send a command to the other CEC device. The spy
device can receive the data when Listen mode option is enabled.
The data transfer is managed using CEC_IRQHandler in stm32f0xx_it.c file.

The example illustrates the use of the CEC communication between three devices 
(3 x STM320518/STM32072B-EVAL boards). A device can send a frame to the other
device by pressing the Joystick button on the EVAL board and the spy device 
receives this message. 

- Hardware Description
  To use this example, you need to load it on three STM320518/STM32072B-EVAL boards (let's call 
  them Device_1, Device_2 and Device_3) then connect these boards through CEC lines
  (PB10 for STM320518-EVAL and PB08 for STM32072B-EVAL  or HDMI connectors) and GND.
  In the firmware example, uncomment the dedicated line in the main.h file to use
  the CEC peripheral as Device_1 or as Device_2 or as Device_3.

- Software Description
  At each joystick buttons press:
    - The CEC device sends the specific command (Volume Up, Volume Down, OSD Name or
      CEC Version) to the specific device and the spy device receive the message
      command.

    - The sender device can send a frame to the other device by pressing the JoyStick 
      button on the EVAL board. Sending status is signaled by lightening and though 
      as follow:
         - If Joystick RIGHT, LEFT, Up or Down is pressed and the data transmission is 
           succeeded ==> Green Led(LD1) is ON.
         - If Joystick RIGHT, LEFT, Up or Down is pressed and the data transmission is 
           failed ==> Red Led(LD3) is ON.    
 
    - The Receiver device receive data, Received data is signaled by LED lightening and 
      though as follow:
         - OSD Name   : Joystick RIGHT and data correctly received ==> LD1, LD2 ON and LD3,LD4 OFF, 
         - CEC Version: Joystick LEFT and data correctly received  ==> LD3, LD4 ON and LD1,LD2 OFF,
         - Volume Up  : Joystick UP and data correctly received    ==> LD1, LD2, LD3 and LD4 are ON,
         - Volume Down: Joystick DOWN and data correctly received  ==> LD1, LD2, LD3 and LD4 are OFF.
         - If an error occurs during reception ==> Only LD3(Red LED) is ON.


@par Directory contents 

  - CEC/CEC_ListenMode/stm32f0xx_conf.h    Library Configuration file
  - CEC/CEC_ListenMode/stm32f0xx_it.c      Interrupt handlers
  - CEC/CEC_ListenMode/stm32f0xx_it.h      Interrupt handlers header file
  - CEC/CEC_ListenMode/main.c              Main program
  - CEC/CEC_ListenMode/main.h              Header for main.c module
  - CEC/CEC_ListenMode/system_stm32f0xx.c  STM32F0xx system source file
  
@note The "system_stm32f0xx.c" is generated by an automatic clock configuration 
      tool and can be easily customized to meet user application requirements. 
      To select different clock setup, use the "STM32F0xx_Clock_Configuration_VX.Y.Z.xls" 
      provided with the AN4055 package available on <a href="http://www.st.com/internet/mcu/class/1734.jsp">  ST Microcontrollers </a>

         
@par Hardware and Software environment

  - This example runs on STM32F0xx Devices.
  
  - This example has been tested with STMicroelectronics STM320518-EVAL and
    STM32072B-EVAL including respectively STM32F051R8T6 and STM32F072VBT6 devices
    and can be easily tailored to any other supported device and development board.

  - STM320518-EVAL Set-up
     - Connect the boards by using one of the two following alternatives:
        - A HDMI Cables between all boards HDMI-CEC connectors (CN3 or CN4) on 
          STM320518-EVAL . 
        - Use simple wires between all devices CEC Lines (PB.10), in this case don't 
          forget to connect all boards grounds together.
  - STM32072B-EVAL Set-up
     - Connect the boards by using one of the two following alternatives:
        - A HDMI Cables between all boards HDMI-CEC connectors (CN3 or CN5) on 
          STM32072B-EVAL . 
        - Use simple wires between all devices CEC Lines (PB.08), in this case don't 
          forget to connect all boards grounds together.


@par How to use it ? 

In order to make the program work, you must do the following :
 - Copy all source files from this example folder to the template folder under
   Project\STM32F0xx_StdPeriph_Templates
 - Open your preferred toolchain
 - Select STM32F051 workspace
 - If the used device is STM32F051R8T6 choose STM32F051 project
    - Add the following files to the project source list
       - Utilities\STM32_EVAL\STM320518_EVAL\stm320518_eval.c
       - Utilities\STM32_EVAL\STM320518_EVAL\stm320518_eval_lcd.c
 - If the used device is STM32F072VBT6 choose STM32F072 project
    - Add the following files to the project source list
       - Utilities\STM32_EVAL\STM32072B_EVAL\stm32072b_eval.c
       - Utilities\STM32_EVAL\STM32072B_EVAL\stm32072b_eval_lcd.c
 - Rebuild all files and load your image into target memory
 - Run the example

 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */
