Fix: force to pass a ref at threads launch
[apps/low-level-can-service.git] / src / obd2.cpp
1 /*
2  * Copyright (C) 2015, 2016 "IoT.bzh"
3  * Author "Romain Forlot" <romain.forlot@iot.bzh>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #include "obd2.hpp"
19
20 void shims_logger(const char* m, const struct afb_binding_interface *interface)
21 {
22         DEBUG(interface, "%s", m);
23 }
24
25 void shims_timer()
26 {
27 }
28
29 /*
30  * Will scan for supported Obd2 pids
31  */
32 obd2_handler_t::obd2_handler_t(const struct afb_binding_interface *interface, can_bus_t can_bus)
33         : can_bus_{can_bus}
34 {
35         can_bus_t can_bus_ = can_bus;
36         DiagnosticShims shims_ = diagnostic_init_shims(shims_logger, can_bus.send_can_message, NULL);
37
38         int n_pids_, i_;
39
40         n_pids_ = size(Obd2Pid);
41         for(i_=0; i_<=n_pids_; i_++)
42         {
43         }
44 }
45
46 void obd2_handler_t::add_request(int pid)
47 {
48         DiagnosticRequest request = {
49         arbitration_id: OBD2_FUNCTIONAL_BROADCAST_ID,
50         mode: 0x1, has_pid: true, pid: pid};
51 }
52
53 bool obd2_handler_t::is_obd2_request(DiagnosticRequest* request)
54 {
55         return request->mode == 0x1 && request->has_pid && request->pid < 0xff;
56 }
57
58 bool obd2_handler_t::is_obd2_signal(const char *name)
59 {
60         if(fnmatch("obd2.*", name, FNM_CASEFOLD) == 0)
61                 return true;
62         return false;
63 }
64
65 bool obd2_handler_t::decode_obd2_response(DiagnosticResponse* responce)
66 {
67         return diagnostic_decode_obd2_pid(response);
68 }