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;
}
Example #4
0
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 );
}