boolean GetAllChanelValueFromPacket(BowlerPacket * Packet) {
    int32_t * data = (int32_t *) (&Packet->use.data[1]);
    if (getAllChanelValueHWPtr != NULL) {
        int i;
        int32_t tmp;
        getAllChanelValueHWPtr(data);
        for (i = 0; i < GetNumberOfIOChannels(); i++) {
            tmp = data[i];
            if(isOutputMode(GetChannelMode(i))==false){
            	setDataTableCurrentValue(i,tmp);
            }else{
                 if(GetChannelMode(i) == IS_SERVO){
                    tmp = GetServoPos(i);
                }else if(GetChannelMode(i)== IS_UART_RX){
                	setDataTableCurrentValue(i,tmp);
    			}else{
                    tmp = getBcsIoDataTable(i)->PIN.currentValue;
    			}
            }

            set32bit(Packet, tmp, (i*4)+1);

        }
        Packet->use.data[0]=(GetNumberOfIOChannels());
        Packet->use.head.RPC=GetRPCValue("gacv");
        Packet->use.head.DataLegnth = 4+1+(GetNumberOfIOChannels()*4);
    } else
        return false;
    FixPacket(Packet);
    return true;
}
BOOL GetAllChanelValueFromPacket(BowlerPacket * Packet){
	INT32 * data = (INT32 *)(Packet->use.data);
	if(getAllChanelValueHWPtr!=NULL){
		int i;
		INT32 tmp;
		getAllChanelValueHWPtr((INT32 * )Packet->use.data);
		for(i=0;i<GetNumberOfIOChannels();i++){
			tmp = data[i];
			getBcsIoDataTable()[i].PIN.currentValue = tmp;
			set32bit(Packet,tmp,i*4);
		}
		Packet->use.head.DataLegnth = 4+GetNumberOfIOChannels()*4;
	}else
		return FALSE;
	FixPacket(Packet);
	return TRUE;
}