aboutsummaryrefslogtreecommitdiffstats
path: root/CAN-binder/low-can-binding/can/can-bus.cpp
AgeCommit message (Collapse)AuthorFilesLines
2017-06-07Improve reliability on multi-threading.Romain Forlot1-48/+45
- Limits call to signals_manager and subscribed signals map - Unlock and lock mutex in the right order to avoid possible dead locks. Change-Id: Ifb152af833ad8bdde5dc4fc3a27b1a7c27046523 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-02Let the thread to be managed outside the binding.Romain Forlot1-4/+2
Change-Id: Ib905a3e0ea58a32761c4dda4a391c1d7b311c12a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-02Get diag manager's socket into subscription objRomain Forlot1-1/+5
Subscription index map is the socket ID which implies the following: - All diagnostic messages subscriptions are stored into a vector holding diagnostic_message and there is 1 socket for all like the diag manager did. - Reworked workflow to open a BCM socket and adding an RX filter more flexible. - Separated methods to handle on_no_clients event. - Cleaning diagnostic manager code to remove all unneeded stuff now. - Embed diagnostic response in VehicleMessage decoded message to be able transmits the PID in event push thread. This is needed by to correctly handle case when there is no clients subscribed to an AFB event. Else we can't find the diagnostic message to remove from low_can_subscription vector. Change-Id: Iab13fd556cda3c69827bcd67f3a23a03cb6a2cf2 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Implement minimum and maximum subscription filtersRomain Forlot1-2/+6
Change-Id: I6b027cdb37e425e185b8d2278ae775f857ff96bc Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Left over renaming variableRomain Forlot1-2/+1
Following change from configuration_t to application_t some variable name doesn't correspond now : conf -> app Change-Id: I56c3a83113777a43af9024a9bc9b53f705b60b0f Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Simplify processing eventRomain Forlot1-10/+10
Set afb_event into subscription object then there is no more std::pair used t access it, better use a method from low_can_subscription_t class Change-Id: Ic0772d97c18ca8899821cf3ce175166bbe0be660 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Fix: get signal name no matter type of signal.Romain Forlot1-3/+3
One method to return name depending upon which type it is, can or diagnostic. Change-Id: I1e96f88654e14316d3afe527fa6fa0d8ddbf410d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Implement method to filter messages before pushingRomain Forlot1-34/+38
Change-Id: I94223ebead4a011a1fb56ed0c3676c433e01319b Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Clearer call to methodRomain Forlot1-4/+4
Change-Id: Ibf37a46989ac8d84a56aa43873fdb8bb0e601304 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Remove reverse find can_signal from can_messageRomain Forlot1-19/+18
There is no need to search against can_signal with CAN arbitration id because a pointer to the signal it maintained through the low_can_subscription_t object now. Change-Id: Ia8b3c7074ff86f7e2a8f3ed503ea1abed3bfe51b Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Reworked subscription to integrate filtering.Romain Forlot1-21/+19
- Creation of an object which old the subscription context (filter, signal) : low_can_subscription_t - Move socket from can_signal_t to this new object. - Adding a member to can_message_t to transport subscription_id to be able to retrieve it with all the context through running. Change-Id: I87be8cd6c3c93a81040357920d8c081a316800c3 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-06-01Renaming configuration to applicationRomain Forlot1-2/+2
It is more accurate to name it application because all its members aren't modifiable at runtime (without talking of last_value_ member and few others). Change-Id: Ica0d33dfd9c26cfdea019c2f41ed07777fb36d39 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-19Change method name to signify that it is an aggregate.Romain Forlot1-1/+1
As can_message_definitions got the exact same name but the one from can_message_set is an aggregate of all can_message_definition. So it is clearer using a different name. Change-Id: Ieb9e4d3291f3dc460eb352d8b8fe5a7cf479e687 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-19Finish config parser retrieving device mapping.Romain Forlot1-2/+8
Change-Id: Ia43f9c0edf09ff9a1c009f198bdad10a6b44b249 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-19Include diagnostic_message_t into can_message_set.Romain Forlot1-1/+1
Change-Id: I7372e469752dd8e90dc9431b9e5c67df12f56c29 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-19Remove can-bus-dev following RAW->BCM sockets migrationRomain Forlot1-60/+28
No needs to get RAW socket for now, so can_bus_dev_t class is useless and now removed from project. Change-Id: I37b3e187ef28ba393beae7a99da4f422f74a298e Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-10CleaningRomain Forlot1-6/+1
Change-Id: I23b862e748e13e7ba69743c8a9d3abb0be36c4bc Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-10Keeping RAW sockets for compatibilityRomain Forlot1-52/+1
And reset can_reader to can_bus_dev_t like the old behavior because BCM sockets has been implemented at signals level not device. Change-Id: I715a19ff65bf9d7231c73b66c1ee95b3f41f8ed0 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-05FormatRomain Forlot1-1/+1
Change-Id: I1c080f961f62a6816b0c36e960ae1ecbeb7fa00d Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-05Improve granularity of BCM socket using one by signalRomain Forlot1-9/+0
Move create_rx_filter to can_signals and adding all accessories needed to works. Change-Id: I3636fe82ce5c2e43a4992b66ce89440ff709004a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-05-04Follow the moving binding and configuration files.Romain Forlot1-1/+1
Change include statement to refer the correct new path to the files. Also change CMakeLists.txt. Change-Id: I66a0bccab02e9fce10072a275a6580d61b4ddfbe Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-27Fix: Add notifying decoding thread if there is new messages.Romain Forlot1-1/+3
Change-Id: If12617ae086d7023ff619799833cd1d4fd0fd413 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-27Check last value before send the event, if no change no event.Romain Forlot1-5/+9
Adding a boolean parameter similarly of existing function to know if we would send the event. Change-Id: I03ee17f656065e556fd2b72b160b140852b68dcc Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-27Reworked reading CAN devices from BCM socket.Romain Forlot1-1/+50
Now reading thread hold in can_bus_t object instead of can_bus_dev_t and reading happens using select(). Change-Id: Ib8cc68c4484679168519f3c0fa485fedd1616c74 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-27Typo, rename, formatRomain Forlot1-5/+6
Change-Id: I8250ef78f0b540617bd249873250f62ad6361fdf Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-24Create a received job for BCM Socket to handle filtering.Romain Forlot1-0/+9
Filter is created using can_signals description and send with appropriate BCM header structure. This is the simplest way to do, no temporal filtering for now is available. Change-Id: Iee49f011ba9316880735d2765c1c23a8b2d3c4d2 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-22Use BCM socket as default cleaning up the old RAW socket code.Romain Forlot1-1/+1
Also use CAN FD frames by default. Change-Id: I5bad10e537653b1a96c2e3012d38dde8627d3caa Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-22Improve logging messagesRomain Forlot1-9/+9
Added for all log messages function name at beginning using __FUNCTION__ macro. Change-Id: Ia0f476ca81b9f79c6d49b425c0520894c59797ea Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-21Move all signals search functions into new signals_manager_t objectRomain Forlot1-11/+16
Create a class from signals lookup and find standalone function and gather all find function into it. There is now only 1 function to find either CAN signals or diagnostic messages, results are returned using an ad-hoc struct containing vector of one or the other type pointers. This object also hold subscribed_signals map with events, so this class is a singleton. Change-Id: I3584c6a91201e6904edc6aeac0abfa1785bdeccc Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-20Separate socket configuration and openingRomain Forlot1-0/+1
Change-Id: I94cad718b516f24c5d1833e09df89f03e529f48a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-20Use same function to open BCM and RAW CAN socketsRomain Forlot1-1/+1
Using one a another socket type is made using a boolean. Change-Id: I0445c8550f289d1e0020f6496c638bc95e8db443 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-20Specializing socket class to CAN socket operations.Romain Forlot1-1/+1
Move all legacy opening RAW CAN socket operation to socket class. Each operations on a CAN socket has to be simple and made by the socket class. Simple BCM socket open operation is implemented. Future will be to open specialized BCM CAN sockets on demand. Change-Id: If285b97afb9871245ab1f13cd9f0401fbd9adf95 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-19Cleaning includeRomain Forlot1-3/+0
Change-Id: I6f90c87c164bc6ba70ee0889668f54f4972a8610 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-18Use a system INI configuration file to get devices mappingRomain Forlot1-73/+27
Instead of specifying a JSON configuration file with CAN devices name, it uses a mapping configuration file that map a high level device names to a real low level names. File path is to be specified into the generated source code which is /etc/dev-mapping.conf for now. Configuration file uses INI file format and is parsed using inih library cpp wrapper. Change-Id: Ibde104e76cd78a6cc86f6eec4f66c274b7567d43 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
2017-04-14Change directory architecture to use 2 separated projects.Romain Forlot1-0/+398
Each projects, binder and generator, has to be compiled separatly. CAN-binder will host high and low level binding CAN-config-generator only the generator used for low level binding. build.sh script just launch both build in their respective dir. Change-Id: Ic77932660fcca507b23a631d4e4e790f608880ae Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>