How to add/define new elements in "dwVehicleIOState" structure?

Hello NV team,

I am trying to leverage the “vehicleio” and “vehicleio_plugin” examples in DW 10.0 SDK, but we need to add a few new elements on top of the predefined “dwVehicleIOState” structure, I am wondering is that possible?

I did a quick test to add new elements in “dwVehicleIOState” structure by modifying “VehicleIO.h” file, and assigning value to them in “vehicleio_plugin” drive code.

The modified codes can be compiled successfully without problem, but at runtime it doesn’t seem the value of the new added elements can be passed over from the “vehicleio_plugin” layer back to “vehicleio” sample app.

I suspect the “dwVehicleIODriver_consume” or “dwVehicleIO_getVehicleState” routines might have filtered out the new elements added in “dwVehicleIOState” structure, but couldn’t debug further without the source code of “dwVehicleIODriver_consume” and “dwVehicleIO_getVehicleState” etc.

Could you please help the advise what is the best way to add new elements in “dwVehicleIOState” structure? Or any other approach can pass data structure from “vehicleio_plugin” layer back to “vehicleio” sample app?

Thanks!

Dear leowang,

I suspect the “dwVehicleIODriver_consume” or “dwVehicleIO_getVehicleState” routines might have filtered out the new elements added in “dwVehicleIOState” structure

Note that your "dwVehicleIODriver_* calls are part of precompiled libdriveworks.so file. and is generated using the original VehicleIO.h. SO any changes you made on your local VehicleIO.h does not change the libdriveworks.so.

May I know what information is missing in current dwVehicleIOState and you would like to extend?

Dear SivaRamaKrishna,

Thanks for your reply, now I understand the root cause is due to the precompiled library.

In our use case there are two main reasons we want to extend the data structures defined in VehicleIO.h file:

  1. The Vehicle platform we are working on is not exactly same as the Vehicle platform the sdk has been targeted at, there are some information we are getting from the Vehicle itself is not defined in the existing sdk. This applies to “dwVehicleIOState” structure only.

  2. We have some proprietary messages we send to and receive from DBW module. This applies to both “dwVehicleIOState” and “dwVehicleIOCommand” or “dwVehicleIOMiscCommand” structures.

Given the situation some of those information are proprietary, I cannot disclose the details.

I’d like to check is it possible for Nvidia to add some generic “bool” type and “float32_t” type of fields in the data structures for customer extensions? The name of each of those fields doesn’t matter and could be as generic as “customer_ext_bool_x” and “customer_ext_float32_x” etc, so we can remap those fields based on our own need. If possible we’d like to add up to 20 fields for “bool” type and 20 fields for “float32_t” type.

Thanks.

Dear leowang,
Thank you for your feedback. we will look into it.

Dear SivaRamaKrishna,

I’d like to follow up and see if any update on this topic?

Thanks.

Dear @leowang,
If the fileds are generic enough, we can extend the data structure. However, If the new fields are totally proprietary and do not fit into VehicleIO abstraction, it is always possible to use VehicleIO side-by-side with custom CAN/DBC interpreters, i.e. they don’t have to share one structure.