BOOL ConfigureChannelFromPacket(BowlerPacket * Packet){ BYTE pin = Packet->use.data[0]; BYTE mode = GetChannelMode(pin); INT32 * data = (INT32 *)(Packet->use.data+1); INT32 tmp; int i; if(configChannelHWPtr!=NULL){ if(Packet->use.head.DataLegnth>5 && mode != IS_SERVO){ int numVals = (Packet->use.head.DataLegnth-(4+1))/4; for(i=0;i<numVals;i++){ tmp = get32bit(Packet, (i*4)+1); getBcsIoDataTable()[i].PIN.currentValue = tmp; data[i]=tmp; } configChannelHWPtr(pin,numVals,(INT32 * )(Packet->use.data+1)); }else{ // Single Byte Servo, legacy HACK INT32 value = Packet->use.data[1]; configChannelHWPtr(pin,1,&value); } }else{ return FALSE; } FixPacket(Packet); return TRUE; }
boolean ConfigureChannelFromPacket(BowlerPacket * Packet) { uint8_t pin = Packet->use.data[0]; boolean setValues = Packet->use.data[1]; uint8_t mode = GetChannelMode(pin); int32_t tmp; if(mode != 0xff && setValues){ if (configChannelHWPtr != NULL) { // println_E("Pushing configs from packet "); // p_int_E(pin); tmp = get32bit(Packet, 3); // print_E(" value = "); // p_int_E(tmp); //println_E(__FILE__);println_E("ConfigureChannelFromPacket"); setDataTableCurrentValue(pin,tmp); configChannelHWPtr(pin, 1, &tmp); } else { return false; } } //println_E("Loading configs into packet"); Packet->use.head.RPC= GetRPCValue("cchn"); Packet->use.head.Method = BOWLER_CRIT; Packet->use.head.DataLegnth = 4+1+(GetNumberOfIOChannels()*4); int32_t * data = (int32_t *) (Packet->use.data + 1); configChannelHWPtr(0xff, GetNumberOfIOChannels(), data); Packet->use.data[0] =GetNumberOfIOChannels(); int i; for (i = 0; i < GetNumberOfIOChannels(); i++) { tmp = data[i]; set32bit(Packet, tmp, (i*4)+1); } FixPacket(Packet); return true; }