Bool SI_CbusRcpMessageAck ( byte channel, byte cmdStatus, byte keyCode ) { SI_CbusRequestSetIdle( channel, CBUS_REQ_IDLE ); if(cmdStatus != MHD_MSC_MSG_NO_ERROR) { SI_CbusMscMsgSubCmdSend( channel, MHD_MSC_MSG_RCPE, cmdStatus ); } return( SI_CbusMscMsgSubCmdSend( channel, MHD_MSC_MSG_RCPK, keyCode )); }
Bool CpCbusSendRcpMessage ( byte channel, byte keyCode ) { Bool success; success = FALSE; for ( ;; ) { printk( "CPCBUS:: Sending RCP Msg:: %02X keycode" " to channel %d CBUS\n\n", (int)keyCode, (int)channel ); if (channel == 0xFF) { printk( "\n::::::: Bad channel -- " ); break; } keyCode = CbusRc5toRcpConvert( keyCode ); if (keyCode == 0xFF) { printk( "\n::::::: Bad KeyCode -- " ); break; } success = SI_CbusMscMsgSubCmdSend( channel, MHD_MSC_MSG_RCP, keyCode ); break; } if ( !success ) { printk("Unable to send command :::::::\n"); } return success; }
Bool CpCbusSendRapMessage ( byte channel, byte actCode ) { Bool success; success = FALSE; for ( ;; ) { printk( "CPCBUS:: Sending RAP Msg:: %02X action code" " to channel %d CBUS\n\n", (int)actCode, (int)channel ); if ( channel == 0xFF) { printk("\n::::::: Bad channel -- "); break; } if ((actCode == MHD_RAP_CMD_POLL) || (actCode == MHD_RAP_CMD_CHG_QUIET) || (actCode != MHD_RAP_CMD_CHG_ACTIVE_PWR)) { success = SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_RAP, actCode ); break; } else { printk("\n::::::: Bad action code -- "); break; } } if (!success) { printk( "Unable to send action command :::::::\n" ); } return success; }
Bool SI_CbusRapMessageAck ( byte channel, byte cmdStatus ) { printk("SI_CbusRapMessageAck:%x \n",(int)cmdStatus); SI_CbusRequestSetIdle( channel, CBUS_REQ_IDLE ); return( SI_CbusMscMsgSubCmdSend( channel, MHD_MSC_MSG_RAPK, cmdStatus )); }
static byte CBusProcessSubCommand ( int channel, byte vs_cmd, byte vs_data ) { /* Save RCP message data in the channel request structure to be returned */ /* to the upper level. */ l_cbus[channel].request[l_cbus[channel].activeIndex].command = vs_cmd; l_cbus[channel].request[l_cbus[channel].activeIndex].offsetData = vs_data; /* Parse it a little before telling the upper level about it. */ switch (vs_cmd) { case MHD_MSC_MSG_RCP: /* Received a Remote Control Protocol message. Signal that */ /* it has been received if we are in the right state, */ /* otherwise, it is a bogus message. Don't send RCPK now */ /* because the upper layer must validate the command. */ printk ("CBUS:: Received <-- MHD_MSC_MSG_RCP::" " cbus state = %02X\n", (int)(l_cbus[ channel].state)); switch (l_cbus[channel].state) { case CBUS_IDLE: case CBUS_SENT: l_cbus[channel].request[l_cbus[channel].activeIndex ].reqStatus = CBUS_REQ_RECEIVED; l_cbus[ channel].state = CBUS_RECEIVED; break; default: l_cbus[ channel].state = CBUS_IDLE; break; } break; case MHD_MSC_MSG_RCPK: printk ("CBUS:: Received <-- MHD_MSC_MSG_RCPK\n"); break; case MHD_MSC_MSG_RCPE: printk ("CBUS:: Received <-- MHD_MSC_MSG_RCPE\n"); break; case MHD_MSC_MSG_RAP: printk ("CBUS:: Received <-- MHD_MSC_MSG_RAP::" " cbus state = %02X\n", (int)(l_cbus[ channel].state)); switch ( l_cbus[ channel].state ) { case CBUS_IDLE: case CBUS_SENT: l_cbus[ channel].request[ l_cbus[ channel].activeIndex ].reqStatus = CBUS_REQ_RECEIVED; l_cbus[ channel].state = CBUS_RECEIVED; break; default: l_cbus[ channel].state = CBUS_IDLE; break; } break; case MHD_MSC_MSG_RAPK: printk ("CBUS:: Received <-- MHD_MSC_MSG_RAPK\n"); break; #if MSC_TESTER case MHD_MSC_MSG_NEW_TESTER: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_NEW_TESTER_REPLY, 0x00); break; case MHD_MSC_MSG_NEW_TESTER_REPLY: msc_return_cmd = vs_cmd; break; case MHD_MSC_MSG_STATE_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_0, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_STATE_CHANGE_REPLY, 0x00); break; case MHD_MSC_MSG_DEVCAP0_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_0, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_0, channel); break; case MHD_MSC_MSG_DEVCAP1_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_1, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_1, channel); break; case MHD_MSC_MSG_DEVCAP2_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_2, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_2, channel); break; case MHD_MSC_MSG_DEVCAP3_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_3, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_3, channel); break; case MHD_MSC_MSG_DEVCAP4_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_4, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_4, channel); break; case MHD_MSC_MSG_DEVCAP5_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_5, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_5, channel); break; case MHD_MSC_MSG_DEVCAP6_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_6, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_6, channel); break; case MHD_MSC_MSG_DEVCAP7_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_7, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_7, channel); break; case MHD_MSC_MSG_DEVCAP8_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_8, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_8, channel); break; case MHD_MSC_MSG_DEVCAP9_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_9, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_9, channel); break; case MHD_MSC_MSG_DEVCAP10_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_A, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_A, channel); break; case MHD_MSC_MSG_DEVCAP11_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_B, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_B, channel); break; case MHD_MSC_MSG_DEVCAP12_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_C, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_C, channel); break; case MHD_MSC_MSG_DEVCAP13_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_D, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_D, channel); break; case MHD_MSC_MSG_DEVCAP14_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_E, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_E, channel); break; case MHD_MSC_MSG_DEVCAP15_CHANGE: SiIRegioCbusWrite( REG_CBUS_DEVICE_CAP_F, channel, vs_data ); SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_DEVCAP_CHANGE_REPLY, SiIRegioCbusRead( REG_CBUS_DEVICE_CAP_F, channel); break; case MHD_MSC_MSG_SET_INT0_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_SET_INT_REPLY, SiIRegioCbusRead( REG_CBUS_SET_INT_0, channel ); break; case MHD_MSC_MSG_SET_INT1_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_SET_INT_REPLY, SiIRegioCbusRead( REG_CBUS_SET_INT_1, channel ); break; case MHD_MSC_MSG_SET_INT2_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_SET_INT_REPLY, SiIRegioCbusRead( REG_CBUS_SET_INT_2, channel ); break; case MHD_MSC_MSG_SET_INT3_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_SET_INT_REPLY, SiIRegioCbusRead( REG_CBUS_SET_INT_3, channel ); break; case MHD_MSC_MSG_WRITE_STAT0_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_WRITE_STAT_REPLY, SiIRegioCbusRead( REG_CBUS_WRITE_STAT_0, channel ); break; case MHD_MSC_MSG_WRITE_STAT1_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_WRITE_STAT_REPLY, SiIRegioCbusRead( REG_CBUS_WRITE_STAT_1, channel ); break; case MHD_MSC_MSG_WRITE_STAT2_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_WRITE_STAT_REPLY, SiIRegioCbusRead( REG_CBUS_WRITE_STAT_2, channel ); break; case MHD_MSC_MSG_WRITE_STAT3_CHECK: SI_CbusMscMsgSubCmdSend(channel, MHD_MSC_MSG_WRITE_STAT_REPLY, SiIRegioCbusRead( REG_CBUS_WRITE_STAT_3, channel ); break; case MHD_MSC_MSG_STATE_CHANGE_REPLY: msc_return_cmd = vs_cmd; break; case MHD_MSC_MSG_DEVCAP_CHANGE_REPLY: msc_return_cmd = vs_cmd; break; case MHD_MSC_MSG_SET_INT_REPLY: msc_return_value = vs_data; msc_return_cmd = vs_cmd; break; case MHD_MSC_MSG_WRITE_STAT_REPLY: msc_return_value = vs_data; msc_return_cmd = vs_cmd; break; #endif default: break; } printk ("CBUS:: MSG_MSC CMD: 0x%02X\n", (int)vs_cmd ); printk ("CBUS:: MSG_MSC Data: 0x%02X\n\n", (int)vs_data ); return( STATUS_SUCCESS ); }