boolean SetAllChannelValueFromPacket(BowlerPacket * Packet) {
    int32_t * data = (int32_t *) (&Packet->use.data[5] );
    int32_t tmp;

    if (setAllChanelValueHWPtr != NULL) {
    	uint32_t time;
        uint8_t i;

        time=get32bit(Packet, 0);

        for (i = 0; i < GetNumberOfIOChannels(); i++) {
        	if(isOutputMode(GetChannelMode(i))==true){
        		tmp = get32bit(Packet, (i*4) +5);
//        		if(GetChannelMode(i) == IS_SERVO)
//					data[i] = (tmp & 	0x000000ff) | (time<<16);
//        		else
        			data[i] = tmp;
			}else{
				data[i] = getBcsIoDataTable(i)->PIN.currentValue;
			}

        }

        setAllChanelValueHWPtr(data, time);

        for (i = 0; i < GetNumberOfIOChannels(); i++) {
        	if(isOutputMode(GetChannelMode(i))==true){

        		//println_E(__FILE__);println_E("SetAllChannelValueFromPacket");
        		if(GetChannelMode(i)!=IS_SERVO)
        			setDataTableCurrentValue(i,data[i]);
        	}
		}
        //READY(Packet, 3, 3);
        GetAllChanelValueFromPacket(Packet);
    } else {
        return false;
    }
    return true;
}
BOOL SetAllChannelValueFromPacket(BowlerPacket * Packet){
	INT32 * data = (INT32 *)(Packet->use.data+4);
	UINT32 tmp;
	if(setAllChanelValueHWPtr!=NULL){
		UINT32_UNION time;
		BYTE i;

		time.byte.FB=Packet->use.data[0];
		time.byte.TB=Packet->use.data[1];
		time.byte.SB=Packet->use.data[2];
		time.byte.LB=Packet->use.data[3];
		for(i=0;i<GetNumberOfIOChannels();i++){
			tmp = get32bit(Packet, i*4);
			getBcsIoDataTable()[i].PIN.currentValue = tmp;
			data[i]=tmp;
		}
		setAllChanelValueHWPtr(data,time.Val);
		READY(Packet,3,3);
		FixPacket(Packet);
	}else{
		return FALSE;
	}
	return TRUE;
}