Hi mark, i am a little bit confused. In ovms.h you define this: extern unsigned char car_doors1; typedef struct { unsigned FrontLeftDoor:1; unsigned FrontRightDoor:1; unsigned ChargePort:1; unsigned PilotSignal:1; unsigned Charging:1; unsigned :1; unsigned HandBrake:1; unsigned CarON:1; } car_doors1bits_t; #define car_doors1bits (*((car_doors1bits_t*)&car_doors1)) so you can use the struct (car_doors1bits_t) as integer "variable" car_doors1 and as single bit car_doors1bits and vice versa. Then you use the integer in vehicle_voltampera.c: (only a few examples!) car_doors1 |= 0x0c; // Set charge and pilot bits and car_doors1 |= 0x40; // PARK car_doors1 &= ~0x80; // CAR OFF witch bits is now what? My understanding is that the MSB is "FrontLeftDoor" and the LSB is "CarON". If i am right, than this is wrong: "car_doors1 &= ~0x80; // CAR OFF" this will clear FrontLeftDoor. And this is "partial" right: "car_doors1 |= 0x0c; // Set charge and pilot bits" this will set Charging and the unnamed bit. But should set charging and PilotSignal. Then it must be 0x18 Can you or anybody else check? I think it is better to use the bits direct. Like this: car_doors1bits.ChargePort = 1 Bye Michael J.