[Ovmsdev] What does CarOn mean?

Nikolay Shishkov nshishkov at yahoo.com
Tue Jun 17 17:01:24 HKT 2014

Thanks Tom, 

After some trial and error last night I figured the indexing and bit testing/setting out. 

The devil is in the detail!


On Tuesday, June 17, 2014 7:42 AM, Tom Saxton <tom at idleloop.com> wrote:

Hi Nikolay,

That code won't quite work for two reasons.

The third data byte has index 2.

Also, since the CarOn field is a single bit, you have to set it to 0 or 1. Your code is setting to either 0x00 or 0x04, both of which will set the CarOn bit to zero because they both have the low bit off. I would do it this way:

car_doors1bits.CarON = (can_databuffer[2] & 0x04) >> 2;


car_doors1bits.CarON = (can_databuffer[2] & 0x04) ? 1 : 0;

I'm not sure which of those will produce the smallest code on the PIC. If the compiler is really smart, it will produce the same optimal code for either. I favor the second for clarity.


On 6/16/14, 6:42 AM, "Nikolay Shishkov" <nshishkov at yahoo.com> wrote:

Thanks Mark, 
With some help I found a message on the canbus that reflects the status of the "Ready" light in the car. 
Please note that the key position may be in "on", that does not mean that the car can drive. I have seen this behavior (the switch is on, but then it takes half second and the car is "ready", most of the time) in the old RAV4 EV, Nissan Leaf, the Mitsubishi Miev trio of cars, Think City EV. 
I don't remember how it works in the Roadster or the Model S. 
So if no one minds I will be setting the CarON when the "Ready" bit is set in that CANBus message. 
Can someone please confirm that my code will extract the correct bit - I think I got it right, but sometimes I confuse the zerobased indexing and the endianness of a system.
The CAN bus message id is 0x424 -

Here with ready OFF:
424 43 00 08 00 00 AE 01 FF And here with ready ON:
424 43 00 0C 00 00 AE 01 FF
So I am looking for the the 3rd bit in the 3rd byte of the message and I am thinking of doing something like this:
car_doors1bits.CarON = can_databuffer[3] & (1<<2);

or maybe 
car_doors1bits.CarON = can_databuffer[3] & 4;
Is this correct?



unsigned char car_doors1 [bit 7]

A bit used to signal whether the car is turned on or off. Set to 1 if the car ignition switch is ON, otherwise 0. If the state of the ignition switch is not readable on the bus, the vehicle not being in 'P' gear or handbrake not appied (and not charging), would be acceptable. Regards, Mark. On 15 Jun, 2014, at 9:38 pm, Nikolay Shishkov <nshishkov at yahoo.com> wrote: >As the subject says - what does CarOn mean? Is it key in position 3, or car in "Ready" state? Or something even more remote like shifter not in "P"? >>Nikolay
OvmsDev mailing list OvmsDev at lists.teslaclub.hk http://lists.teslaclub.hk/mailman/listinfo/ovmsdev 

OvmsDev mailing list
OvmsDev at lists.teslaclub.hk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20140617/ac9602ac/attachment.htm>

More information about the OvmsDev mailing list