void cec_user_control_released_irq(void)  
{
    hdmitx_cec_dbg_print("CEC Key released \n");
    //pcec_message->content.msg.flag = 0;
    // cec_key_flag = 0;
    //cec_send_event_irq();
}
Beispiel #2
0
void cec_user_control_pressed_irq(void)
{
    hdmitx_cec_dbg_print("\nCEC Key pressed \n");
    //pcec_message->content.msg.flag = 1;
    //cec_key_flag = 1;
    cec_send_event_irq();
}
void cec_send_event_irq(void)
{
    int i;
    unsigned char   operand_num_irq;
    unsigned char operands_irq[14];
    //unsigned char  opcode_irq;    
    //unsigned char   msg_length_irq;
    
    // msg_length_irq  = cec_rx_msg_buf.cec_rx_message[cec_rx_msg_buf.rx_write_pos].msg_length;           
    //opcode_irq	= cec_rx_msg_buf.cec_rx_message[cec_rx_msg_buf.rx_write_pos].content.msg.opcode;
         
    operand_num_irq = cec_rx_msg_buf.cec_rx_message[cec_rx_msg_buf.rx_write_pos].operand_num;
    for (i = 0; i < operand_num_irq; i++ )
    {
        operands_irq[i] = cec_rx_msg_buf.cec_rx_message[cec_rx_msg_buf.rx_write_pos].content.msg.operands[i]; 
        hdmitx_cec_dbg_print("CEC:operands_irq[%d]:0x%x\n", i, operands_irq[i]);       
    }
    
    switch(cec_rx_msg_buf.cec_rx_message[cec_rx_msg_buf.rx_write_pos].content.msg.operands[0]){
    case 0x33:
        cec_system_audio_mode_request();
        //cec_set_system_audio_mode();
        break;
    case 0x35:
        break;
    default:
        break;      
    }	
    
    input_event(remote_cec_dev, EV_KEY, cec_key_map[operands_irq[0]], 1);
    input_sync(remote_cec_dev);	
    input_event(remote_cec_dev, EV_KEY, cec_key_map[operands_irq[0]], 0);
    input_sync(remote_cec_dev);
    hdmitx_cec_dbg_print("CEC:cec_key_map[operands_irq[0]]:%d\n",cec_key_map[operands_irq[0]]);       		
   	
    hdmitx_cec_dbg_print("CEC:cec_send_event_irq\n");  	 	
}
void cec_send_event(cec_rx_message_t* pcec_message)
{
    int i;
    unsigned char brdcst, opcode;
    unsigned char initiator, follower;
    unsigned char operand_num;
    unsigned char msg_length;
    unsigned char operands[14];
    
    /* parse message */
    if ((!pcec_message) || (check_cec_msg_valid(pcec_message) == 0)) return;

    initiator   = pcec_message->content.msg.header >> 4;
    follower    = pcec_message->content.msg.header & 0x0f;
    opcode      = pcec_message->content.msg.opcode;   
    operand_num = pcec_message->operand_num;
    brdcst      = (follower == 0x0f);
    msg_length  = pcec_message->msg_length;
    
    for (i = 0; i < operand_num; i++ ) {
       operands[i] = pcec_message->content.msg.operands[i]; 
       hdmitx_cec_dbg_print("CEC:operands[%d]:%u\n", i, operands[i]);       
    }
    if(cec_key_flag) {
        input_event(remote_cec_dev, EV_KEY, cec_key_map[operands[0]], 1);
        input_sync(remote_cec_dev);
        hdmitx_cec_dbg_print("CEC:cec_key_map[operands[0]]:%d\n",cec_key_map[operands[0]]);
    }
    else{
        input_event(remote_cec_dev, EV_KEY, cec_key_map[operands[0]], 0);
        input_sync(remote_cec_dev);
        hdmitx_cec_dbg_print("CEC:cec_key_map[operands[0]]:%d\n",cec_key_map[operands[0]]);
    }   

    hdmitx_cec_dbg_print("CEC:cec_send_event\n");
}