diff options
-rw-r--r-- | low-can-binding/binding/application.hpp | 1 | ||||
-rw-r--r-- | low-can-binding/binding/low-can-apidef.json | 392 | ||||
-rw-r--r-- | low-can-binding/binding/low-can-cb.cpp | 34 | ||||
-rw-r--r-- | low-can-binding/can/message/can-message.cpp | 12 | ||||
-rw-r--r-- | low-can-binding/can/message/j1939-message.cpp | 194 | ||||
-rw-r--r-- | low-can-binding/can/message/j1939-message.hpp | 90 | ||||
-rw-r--r-- | low-can-binding/can/signals.hpp | 8 | ||||
-rw-r--r-- | low-can-binding/diagnostic/diagnostic-message.hpp | 18 | ||||
-rw-r--r-- | low-can-binding/utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp | 44 | ||||
-rw-r--r-- | low-can-binding/utils/socketcan-j1939/socketcan-j1939-data.cpp | 84 | ||||
-rw-r--r-- | low-can-binding/utils/socketcan-j1939/socketcan-j1939.cpp | 2 | ||||
-rw-r--r-- | low-can-binding/utils/socketcan-j1939/socketcan-j1939.hpp | 19 |
12 files changed, 448 insertions, 450 deletions
diff --git a/low-can-binding/binding/application.hpp b/low-can-binding/binding/application.hpp index a5d2285c..5045ddab 100644 --- a/low-can-binding/binding/application.hpp +++ b/low-can-binding/binding/application.hpp @@ -117,4 +117,3 @@ class application_t bool isBusActive(can_bus_dev_t* bus); */ }; - diff --git a/low-can-binding/binding/low-can-apidef.json b/low-can-binding/binding/low-can-apidef.json index e647bd24..5f528377 100644 --- a/low-can-binding/binding/low-can-apidef.json +++ b/low-can-binding/binding/low-can-apidef.json @@ -1,183 +1,183 @@ { - "openapi": "3.0.0", - "$schema": "http:iot.bzh/download/openapi/schema-3.0/default-schema.json", - "info": { - "description": "", - "title": "low-can", - "version": "4.0", - "x-binding-c-generator": { - "api": "low-can", - "version": 2, - "prefix": "", - "postfix": "", - "start": null , - "onevent": null, - "init": "init_binding", - "scope": "", - "private": false - } - }, - "servers": [ - { - "url": "ws://{host}:{port}/api/monitor", - "description": "Low level CAN API.", - "variables": { - "host": { - "default": "localhost" - }, - "port": { - "default": "1234" - } - }, - "x-afb-events": [ - { - "$ref": "#/components/schemas/afb-event" - } - ] - } - ], - "components": { - "schemas": { - "afb-reply": { - "$ref": "#/components/schemas/afb-reply-v2" - }, - "afb-event": { - "$ref": "#/components/schemas/afb-event-v2" - }, - "afb-reply-v2": { - "title": "Generic response.", - "type": "object", - "required": [ "jtype", "request" ], - "properties": { - "jtype": { - "type": "string", - "const": "afb-reply" - }, - "request": { - "type": "object", - "required": [ "status" ], - "properties": { - "status": { "type": "string" }, - "info": { "type": "string" }, - "token": { "type": "string" }, - "uuid": { "type": "string" }, - "reqid": { "type": "string" } - } - }, - "response": { "type": "object" } - } - }, - "afb-event-v2": { - "type": "object", - "required": [ "jtype", "event" ], - "properties": { - "jtype": { - "type": "string", - "const": "afb-event" - }, - "event": { "type": "string" }, - "data": { "type": "object" } - } - } - }, - "x-permissions": { - "monitor": { - "permission": "urn:AGL:permission:low-can:public:monitor" - }, - "write": { - "permission": "urn:AGL:permission::platform:can:write " - } - }, - "responses": { - "200": { - "description": "A complex object array response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/afb-reply" - } - } - } - } - } - }, - "paths": { - "/subscribe": { - "description": "Subscribe to CAN signals events", - "parameters": [ - { - "in": "query", - "name": "event", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - }, - "/unsubscribe": { - "description": "Unsubscribe previously subscribed signals.", - "parameters": [ - { - "in": "query", - "name": "event", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - }, - "/get": { - "description": "get a current value of CAN message", - "parameters": [ - { - "in": "query", - "name": "event", - "required": false, - "schema": { "type": "string" } - } - ], - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - }, - "/list": { - "description": "get a supported CAN message list", - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - }, - "/auth": { - "description": "Authenticate session to be raise Level Of Assurance.", - "get": { - "x-permissions": { - "$ref": "#/components/x-permissions/write" - }, - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - } - }, - "/write": { - "description": "Write a CAN messages to the CAN bus.", - "get": { - "x-permissions": { - "LOA": 1 - }, - "parameters": [ - { - "in": "query", - "name": "bus_name", - "required": false, - "schema": { "type": "string" } - }, - { - "in": "query", - "name": "frame", - "required": false, + "openapi": "3.0.0", + "$schema": "http:iot.bzh/download/openapi/schema-3.0/default-schema.json", + "info": { + "description": "", + "title": "low-can", + "version": "4.0", + "x-binding-c-generator": { + "api": "low-can", + "version": 2, + "prefix": "", + "postfix": "", + "start": null , + "onevent": null, + "init": "init_binding", + "scope": "", + "private": false + } + }, + "servers": [ + { + "url": "ws://{host}:{port}/api/monitor", + "description": "Low level CAN API.", + "variables": { + "host": { + "default": "localhost" + }, + "port": { + "default": "1234" + } + }, + "x-afb-events": [ + { + "$ref": "#/components/schemas/afb-event" + } + ] + } + ], + "components": { + "schemas": { + "afb-reply": { + "$ref": "#/components/schemas/afb-reply-v2" + }, + "afb-event": { + "$ref": "#/components/schemas/afb-event-v2" + }, + "afb-reply-v2": { + "title": "Generic response.", + "type": "object", + "required": [ "jtype", "request" ], + "properties": { + "jtype": { + "type": "string", + "const": "afb-reply" + }, + "request": { + "type": "object", + "required": [ "status" ], + "properties": { + "status": { "type": "string" }, + "info": { "type": "string" }, + "token": { "type": "string" }, + "uuid": { "type": "string" }, + "reqid": { "type": "string" } + } + }, + "response": { "type": "object" } + } + }, + "afb-event-v2": { + "type": "object", + "required": [ "jtype", "event" ], + "properties": { + "jtype": { + "type": "string", + "const": "afb-event" + }, + "event": { "type": "string" }, + "data": { "type": "object" } + } + } + }, + "x-permissions": { + "monitor": { + "permission": "urn:AGL:permission:low-can:public:monitor" + }, + "write": { + "permission": "urn:AGL:permission::platform:can:write " + } + }, + "responses": { + "200": { + "description": "A complex object array response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/afb-reply" + } + } + } + } + } + }, + "paths": { + "/subscribe": { + "description": "Subscribe to CAN signals events", + "parameters": [ + { + "in": "query", + "name": "event", + "required": false, + "schema": { "type": "string" } + } + ], + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + }, + "/unsubscribe": { + "description": "Unsubscribe previously subscribed signals.", + "parameters": [ + { + "in": "query", + "name": "event", + "required": false, + "schema": { "type": "string" } + } + ], + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + }, + "/get": { + "description": "get a current value of CAN message", + "parameters": [ + { + "in": "query", + "name": "event", + "required": false, + "schema": { "type": "string" } + } + ], + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + }, + "/list": { + "description": "get a supported CAN message list", + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + }, + "/auth": { + "description": "Authenticate session to be raise Level Of Assurance.", + "get": { + "x-permissions": { + "$ref": "#/components/x-permissions/write" + }, + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + } + }, + "/write": { + "description": "Write a CAN messages to the CAN bus.", + "get": { + "x-permissions": { + "LOA": 1 + }, + "parameters": [ + { + "in": "query", + "name": "bus_name", + "required": false, + "schema": { "type": "string" } + }, + { + "in": "query", + "name": "frame", + "required": false, "schema": { "type": "array" }, "parameters": [ { @@ -199,24 +199,24 @@ "schema": { "type": "string" } } ] - }, + }, { - "in": "query", - "name": "signal_name", - "required": false, - "schema": { "type": "string" } + "in": "query", + "name": "signal_name", + "required": false, + "schema": { "type": "string" } }, { - "in": "query", - "name": "signal_value", - "required": false, - "schema": { "type": "integer" } - } - ], - "responses": { - "200": {"$ref": "#/components/responses/200"} - } - } - } - } + "in": "query", + "name": "signal_value", + "required": false, + "schema": { "type": "integer" } + } + ], + "responses": { + "200": {"$ref": "#/components/responses/200"} + } + } + } + } } diff --git a/low-can-binding/binding/low-can-cb.cpp b/low-can-binding/binding/low-can-cb.cpp index 2b630845..ad9543d9 100644 --- a/low-can-binding/binding/low-can-cb.cpp +++ b/low-can-binding/binding/low-can-cb.cpp @@ -192,11 +192,11 @@ static int add_to_event_loop(std::shared_ptr<low_can_subscription_t>& can_subscr } static int subscribe_unsubscribe_diagnostic_messages(afb_req_t request, - bool subscribe, - std::vector<std::shared_ptr<diagnostic_message_t> > diagnostic_messages, - struct event_filter_t& event_filter, - std::map<int, std::shared_ptr<low_can_subscription_t> >& s, - bool perm_rec_diag_req) + bool subscribe, + std::vector<std::shared_ptr<diagnostic_message_t> > diagnostic_messages, + struct event_filter_t& event_filter, + std::map<int, std::shared_ptr<low_can_subscription_t> >& s, + bool perm_rec_diag_req) { int rets = 0; application_t& app = application_t::instance(); @@ -257,10 +257,10 @@ static int subscribe_unsubscribe_diagnostic_messages(afb_req_t request, } static int subscribe_unsubscribe_signals(afb_req_t request, - bool subscribe, - std::vector<std::shared_ptr<signal_t> > signals, - struct event_filter_t& event_filter, - std::map<int, std::shared_ptr<low_can_subscription_t> >& s) + bool subscribe, + std::vector<std::shared_ptr<signal_t> > signals, + struct event_filter_t& event_filter, + std::map<int, std::shared_ptr<low_can_subscription_t> >& s) { int rets = 0; for(const auto& sig: signals) @@ -602,18 +602,18 @@ static void write_frame(afb_req_t request, const std::string& bus_name, json_obj AFB_DEBUG("JSON content %s",json_object_get_string(json_value)); if(!wrap_json_unpack(json_value, "{si, si, so !}", - "can_id", &id, - "can_dlc", &length, - "can_data", &can_data)) + "can_id", &id, + "can_dlc", &length, + "can_data", &can_data)) { message = new can_message_t(CANFD_MAX_DLEN,(uint32_t)id,(uint32_t)length,message_format_t::STANDARD,false,0,data,0); write_raw_frame(request,bus_name,message,can_data,socket_type::BCM); } #ifdef USE_FEATURE_J1939 else if(!wrap_json_unpack(json_value, "{si, si, so !}", - "pgn", &id, - "length", &length, - "data", &can_data)) + "pgn", &id, + "length", &length, + "data", &can_data)) { message = new j1939_message_t(J1939_MAX_DLEN,(uint32_t)length,message_format_t::J1939,data,0,J1939_NO_NAME,(pgn_t)id,J1939_NO_ADDR); write_raw_frame(request,bus_name,message,can_data,socket_type::J1939); @@ -701,8 +701,8 @@ void write(afb_req_t request) // Process about Raw CAN message on CAN bus directly if (args != NULL && ! wrap_json_unpack(args, "{ss, so !}", - "bus_name", &name, - "frame", &json_value)) + "bus_name", &name, + "frame", &json_value)) write_frame(request, name, json_value); // Search signal then encode value. diff --git a/low-can-binding/can/message/can-message.cpp b/low-can-binding/can/message/can-message.cpp index 945c0ba7..90bade53 100644 --- a/low-can-binding/can/message/can-message.cpp +++ b/low-can-binding/can/message/can-message.cpp @@ -213,13 +213,13 @@ bool can_message_t::is_set() std::string can_message_t::get_debug_message() { std::string ret = ""; - ret = ret + "Here is the next can message : id " + std::to_string(id_) + " length " + std::to_string(length_) + ", data "; - for (size_t i = 0; i < data_.size(); i++) - { - ret = ret + std::to_string(data_[i]); - } + ret = ret + "Here is the next can message : id " + std::to_string(id_) + " length " + std::to_string(length_) + ", data "; + for (size_t i = 0; i < data_.size(); i++) + { + ret = ret + std::to_string(data_[i]); + } - return ret; + return ret; } struct bcm_msg can_message_t::get_bcm_msg() diff --git a/low-can-binding/can/message/j1939-message.cpp b/low-can-binding/can/message/j1939-message.cpp index 0d2320dc..a0ca4b2a 100644 --- a/low-can-binding/can/message/j1939-message.cpp +++ b/low-can-binding/can/message/j1939-message.cpp @@ -27,10 +27,10 @@ * */ j1939_message_t::j1939_message_t(): - message_t(), - name_{0}, - pgn_{0}, - addr_{0} + message_t(), + name_{0}, + pgn_{0}, + addr_{0} {} /** @@ -46,17 +46,17 @@ j1939_message_t::j1939_message_t(): * @param addr The address of the message */ j1939_message_t::j1939_message_t(uint32_t maxdlen, - uint32_t length, - message_format_t format, - std::vector<uint8_t>& data, - uint64_t timestamp, - name_t name, - pgn_t pgn, - uint8_t addr): - message_t(maxdlen,length, format, data, timestamp), - name_{name}, - pgn_{pgn}, - addr_{addr} + uint32_t length, + message_format_t format, + std::vector<uint8_t>& data, + uint64_t timestamp, + name_t name, + pgn_t pgn, + uint8_t addr): + message_t(maxdlen,length, format, data, timestamp), + name_{name}, + pgn_{pgn}, + addr_{addr} {} /// @@ -65,7 +65,7 @@ j1939_message_t::j1939_message_t(uint32_t maxdlen, /// @return name_ class member /// uint64_t j1939_message_t::get_name() const { - return name_; + return name_; } /// @@ -74,7 +74,7 @@ uint64_t j1939_message_t::get_name() const { /// @return pgn_ class member /// uint32_t j1939_message_t::get_pgn() const{ - return pgn_; + return pgn_; } /// @@ -83,7 +83,7 @@ uint32_t j1939_message_t::get_pgn() const{ /// @return addr_ class member /// uint8_t j1939_message_t::get_addr() const{ - return addr_; + return addr_; } /** @@ -95,13 +95,13 @@ uint8_t j1939_message_t::get_addr() const{ */ std::string to_hex( uint8_t data[], const size_t length) { - std::stringstream stream; - stream << std::hex << std::setfill('0'); - for(int i = 0; i < length; i++) - { - stream << std::hex << ((int) data[i]); - } - return stream.str(); + std::stringstream stream; + stream << std::hex << std::setfill('0'); + for(int i = 0; i < length; i++) + { + stream << std::hex << ((int) data[i]); + } + return stream.str(); } /// @brief Take a sockaddr_can struct and array of data to initialize class members @@ -116,39 +116,39 @@ std::string to_hex( uint8_t data[], const size_t length) /// @return A j1939_message_t object fully initialized with sockaddr_can and data values. std::shared_ptr<j1939_message_t> j1939_message_t::convert_from_addr(struct sockaddr_can& addr, uint8_t (&data)[128],size_t nbytes, uint64_t timestamp) { - int i; - uint32_t length = 0; - message_format_t format; - std::vector<uint8_t> data_vector; - - if(nbytes > J1939_MAX_DLEN) - { - AFB_DEBUG("Unsupported j1939 frame"); - format = message_format_t::INVALID; - } - else - { - //AFB_DEBUG("Got a j1939 frame"); - format = message_format_t::J1939; - } - - length = (uint32_t) nbytes; - data_vector.reserve(length); - - data_vector.clear(); - - std::string data_string; - data_string = to_hex(data,length); - - for(i=0;i<length;i++) - { - data_vector.push_back(data[i]); - }; - - AFB_DEBUG("Found pgn: %X, format: %X, length: %X, data %s", - addr.can_addr.j1939.pgn, (uint8_t)format, length, data_string.c_str()); - - return std::make_shared<j1939_message_t>(j1939_message_t(J1939_MAX_DLEN,length, format, data_vector, timestamp,addr.can_addr.j1939.name,addr.can_addr.j1939.pgn,addr.can_addr.j1939.addr)); + int i; + uint32_t length = 0; + message_format_t format; + std::vector<uint8_t> data_vector; + + if(nbytes > J1939_MAX_DLEN) + { + AFB_DEBUG("Unsupported j1939 frame"); + format = message_format_t::INVALID; + } + else + { + //AFB_DEBUG("Got a j1939 frame"); + format = message_format_t::J1939; + } + + length = (uint32_t) nbytes; + data_vector.reserve(length); + + data_vector.clear(); + + std::string data_string; + data_string = to_hex(data,length); + + for(i=0;i<length;i++) + { + data_vector.push_back(data[i]); + }; + + AFB_DEBUG("Found pgn: %X, format: %X, length: %X, data %s", + addr.can_addr.j1939.pgn, (uint8_t)format, length, data_string.c_str()); + + return std::make_shared<j1939_message_t>(j1939_message_t(J1939_MAX_DLEN,length, format, data_vector, timestamp,addr.can_addr.j1939.name,addr.can_addr.j1939.pgn,addr.can_addr.j1939.addr)); } /// @brief Test if members pgn_ and length are set. @@ -165,12 +165,12 @@ bool j1939_message_t::is_set() std::string j1939_message_t::get_debug_message() { std::string ret = ""; - ret = ret + "Here is the next j1939 message : pgn " + std::to_string(pgn_) + " length " + std::to_string(length_) + ", data "; - for (size_t i = 0; i < data_.size(); i++) - { - ret = ret + std::to_string(data_[i]); - } - return ret; + ret = ret + "Here is the next j1939 message : pgn " + std::to_string(pgn_) + " length " + std::to_string(length_) + ", data "; + for (size_t i = 0; i < data_.size(); i++) + { + ret = ret + std::to_string(data_[i]); + } + return ret; } /// @@ -180,7 +180,7 @@ std::string j1939_message_t::get_debug_message() /// uint32_t j1939_message_t::get_id() const { - AFB_DEBUG("Prefer method get_pgn() for j1939 messages"); + AFB_DEBUG("Prefer method get_pgn() for j1939 messages"); return get_pgn(); } @@ -191,7 +191,7 @@ uint32_t j1939_message_t::get_id() const */ struct sockaddr_can j1939_message_t::get_sockname() { - return sockname_; + return sockname_; } /** @@ -201,7 +201,7 @@ struct sockaddr_can j1939_message_t::get_sockname() */ void j1939_message_t::set_sockname(struct sockaddr_can sockname) { - sockname_ = sockname; + sockname_ = sockname; } /** @@ -213,34 +213,34 @@ void j1939_message_t::set_sockname(struct sockaddr_can sockname) */ void j1939_message_t::set_sockname(pgn_t pgn, name_t name, uint8_t addr) { - memset(&sockname_, 0, sizeof(sockname_)); - sockname_.can_family = AF_CAN; - sockname_.can_ifindex = 0; - - if(addr <= 0 || addr >= UINT8_MAX ) - { - sockname_.can_addr.j1939.addr = J1939_NO_ADDR; - } - else - { - sockname_.can_addr.j1939.addr = addr; - } - - if(name <= 0 || name >= UINT64_MAX ) - { - sockname_.can_addr.j1939.name = J1939_NO_NAME; - } - else - { - sockname_.can_addr.j1939.name = name; - } - - if(pgn <= 0 || pgn > J1939_PGN_MAX) - { - sockname_.can_addr.j1939.pgn = J1939_NO_PGN; - } - else - { - sockname_.can_addr.j1939.pgn = pgn; - } + memset(&sockname_, 0, sizeof(sockname_)); + sockname_.can_family = AF_CAN; + sockname_.can_ifindex = 0; + + if(addr <= 0 || addr >= UINT8_MAX ) + { + sockname_.can_addr.j1939.addr = J1939_NO_ADDR; + } + else + { + sockname_.can_addr.j1939.addr = addr; + } + + if(name <= 0 || name >= UINT64_MAX ) + { + sockname_.can_addr.j1939.name = J1939_NO_NAME; + } + else + { + sockname_.can_addr.j1939.name = name; + } + + if(pgn <= 0 || pgn > J1939_PGN_MAX) + { + sockname_.can_addr.j1939.pgn = J1939_NO_PGN; + } + else + { + sockname_.can_addr.j1939.pgn = pgn; + } }
\ No newline at end of file diff --git a/low-can-binding/can/message/j1939-message.hpp b/low-can-binding/can/message/j1939-message.hpp index 929c8232..0d3736f1 100644 --- a/low-can-binding/can/message/j1939-message.hpp +++ b/low-can-binding/can/message/j1939-message.hpp @@ -27,55 +27,55 @@ class j1939_message_t : public message_t { - private: - /* J1939 NAME - * - * bit 0-20 : Identity Number - * bit 21-31 : Manufacturer Code - * bit 32-34 : ECU Instance - * bit 35-39 : Function Instance - * bit 40-47 : Function - * bit 48 : Reserved - * bit 49-55 : Vehicle System - * bit 56-59 : Vehicle System Instance - * bit 60-62 : Industry Group - * bit 63 : Arbitrary Address Capable - */ - name_t name_; + private: + /* J1939 NAME + * + * bit 0-20 : Identity Number + * bit 21-31 : Manufacturer Code + * bit 32-34 : ECU Instance + * bit 35-39 : Function Instance + * bit 40-47 : Function + * bit 48 : Reserved + * bit 49-55 : Vehicle System + * bit 56-59 : Vehicle System Instance + * bit 60-62 : Industry Group + * bit 63 : Arbitrary Address Capable + */ + name_t name_; - /* J1939 Parameter Group Number - * - * bit 0-7 : PDU Specific (PS) - * bit 8-15 : PDU Format (PF) - * bit 16 : Data Page (DP) - * bit 17 : Reserved (R) - * bit 19-31 : set to zero - */ - pgn_t pgn_; + /* J1939 Parameter Group Number + * + * bit 0-7 : PDU Specific (PS) + * bit 8-15 : PDU Format (PF) + * bit 16 : Data Page (DP) + * bit 17 : Reserved (R) + * bit 19-31 : set to zero + */ + pgn_t pgn_; - /* J1939 Address - 0-255 - */ - uint8_t addr_; + /* J1939 Address + 0-255 + */ + uint8_t addr_; - /** - * @brief The sockanme to send a message to - * an other ECU - */ - struct sockaddr_can sockname_; + /** + * @brief The sockanme to send a message to + * an other ECU + */ + struct sockaddr_can sockname_; - public: - j1939_message_t(); - j1939_message_t(uint32_t maxdlen, uint32_t length, message_format_t format, std::vector<uint8_t>& data, uint64_t timestamp, name_t name, pgn_t pgn, uint8_t addr); - uint64_t get_name() const; - uint32_t get_pgn() const; - uint8_t get_addr() const; - static std::shared_ptr<j1939_message_t> convert_from_addr(struct sockaddr_can& addr, uint8_t (&data)[128], size_t nbytes, uint64_t timestamp); - bool is_set(); - std::string get_debug_message(); - uint32_t get_id() const; - struct sockaddr_can get_sockname(); + public: + j1939_message_t(); + j1939_message_t(uint32_t maxdlen, uint32_t length, message_format_t format, std::vector<uint8_t>& data, uint64_t timestamp, name_t name, pgn_t pgn, uint8_t addr); + uint64_t get_name() const; + uint32_t get_pgn() const; + uint8_t get_addr() const; + static std::shared_ptr<j1939_message_t> convert_from_addr(struct sockaddr_can& addr, uint8_t (&data)[128], size_t nbytes, uint64_t timestamp); + bool is_set(); + std::string get_debug_message(); + uint32_t get_id() const; + struct sockaddr_can get_sockname(); void set_sockname(struct sockaddr_can sockname); - void set_sockname(pgn_t pgn, name_t name, uint8_t addr); + void set_sockname(pgn_t pgn, name_t name, uint8_t addr); }; diff --git a/low-can-binding/can/signals.hpp b/low-can-binding/can/signals.hpp index cefd8b81..9a8572c9 100644 --- a/low-can-binding/can/signals.hpp +++ b/low-can-binding/can/signals.hpp @@ -68,7 +68,7 @@ private: std::shared_ptr<message_definition_t> parent_; /*!< parent_ - pointer to the parent message definition holding this signal*/ std::string generic_name_; /*!< generic_name_ - The name of the signal to be output.*/ static std::string prefix_; /*!< prefix_ - generic_name_ will be prefixed with it. It has to reflect the used protocol. - * which make easier to sort message when the come in.*/ + * which make easier to sort message when the come in.*/ uint8_t bit_position_; /*!< bitPosition_ - The starting bit of the signal in its CAN message (assuming * non-inverted bit numbering, i.e. the most significant bit of * each byte is 0) */ @@ -80,8 +80,8 @@ private: float min_value_; /*!< min_value_ - The minimum value for the processed signal.*/ float max_value_; /*!< max_value_ - The maximum value for the processed signal. */ frequency_clock_t frequency_; /*!< frequency_ - A frequency_clock_t struct to control the maximum frequency to - * process and send this signal. To process every value, set the - * clock's frequency to 0. */ + * process and send this signal. To process every value, set the + * clock's frequency to 0. */ bool send_same_; /*!< send_same_ - If true, will re-send even if the value hasn't changed.*/ bool force_send_changed_; /*!< force_send_changed_ - If true, regardless of the frequency, it will send the * value if it has changed. */ @@ -96,7 +96,7 @@ private: * is used. */ bool received_; /*!< received_ - True if this signal has ever been received.*/ float last_value_; /*!< lastValue_ - The last received value of the signal. If 'received' is false, - * this value is undefined. */ + * this value is undefined. */ std::pair<bool,int> multiplex_; /*!< multiplex_ - If bool is false and int is 0 is not a multiplex signal If bool is true, that indicate that is a multiplexor If int is different of 0, that indicate the link with a multiplexor */ diff --git a/low-can-binding/diagnostic/diagnostic-message.hpp b/low-can-binding/diagnostic/diagnostic-message.hpp index e7877d6e..eb527aa5 100644 --- a/low-can-binding/diagnostic/diagnostic-message.hpp +++ b/low-can-binding/diagnostic/diagnostic-message.hpp @@ -70,15 +70,15 @@ class diagnostic_message_t public: const char* generic_name = generic_name_.c_str(); diagnostic_message_t(uint8_t pid, - const std::string& generic_name, - const int min, - const int max, - enum UNIT unit, - float frequency, - DiagnosticResponseDecoder decoder, - DiagnosticResponseCallback callback, - bool supported, - bool received); + const std::string& generic_name, + const int min, + const int max, + enum UNIT unit, + float frequency, + DiagnosticResponseDecoder decoder, + DiagnosticResponseCallback callback, + bool supported, + bool received); uint32_t get_pid(); const std::string get_generic_name() const; diff --git a/low-can-binding/utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp b/low-can-binding/utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp index 92c44c8c..5a950572 100644 --- a/low-can-binding/utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp +++ b/low-can-binding/utils/socketcan-j1939/socketcan-j1939-addressclaiming.hpp @@ -24,29 +24,29 @@ namespace utils { class socketcan_j1939_addressclaiming_t : public socketcan_j1939_t { - public: - socketcan_j1939_addressclaiming_t(); - virtual std::shared_ptr<message_t> read_message(); - virtual int open(std::string device_name, pgn_t pgn); - virtual claiming_state get_state(); - TimerHandleT *timer_handle_; - std::pair<uint64_t, bool> table_j1939_address_[J1939_IDLE_ADDR]; + public: + socketcan_j1939_addressclaiming_t(); + virtual std::shared_ptr<message_t> read_message(); + virtual int open(std::string device_name, pgn_t pgn); + virtual claiming_state get_state(); + TimerHandleT *timer_handle_; + std::pair<uint64_t, bool> table_j1939_address_[J1939_IDLE_ADDR]; - private: - int claim_address(bool first_claim,bool new_address); - int pgn_request(); - void initialize_table_j1939_address(); - int save_addr_name(uint8_t addr,name_t name); - uint8_t choose_new_address(); - uint8_t get_addr_table(name_t name); - void change_state(claiming_state new_state); - void launch_timer(); - static int no_response_claiming(TimerHandleT *timerhandle); - static int free_timer_handle(void *timer_context); + private: + int claim_address(bool first_claim,bool new_address); + int pgn_request(); + void initialize_table_j1939_address(); + int save_addr_name(uint8_t addr,name_t name); + uint8_t choose_new_address(); + uint8_t get_addr_table(name_t name); + void change_state(claiming_state new_state); + void launch_timer(); + static int no_response_claiming(TimerHandleT *timerhandle); + static int free_timer_handle(void *timer_context); - uint8_t current_address_; - bool signal_stop_; - claiming_state claiming_state_; - std::string device_name_; + uint8_t current_address_; + bool signal_stop_; + claiming_state claiming_state_; + std::string device_name_; }; } diff --git a/low-can-binding/utils/socketcan-j1939/socketcan-j1939-data.cpp b/low-can-binding/utils/socketcan-j1939/socketcan-j1939-data.cpp index c9d3e0a6..b2f17c6e 100644 --- a/low-can-binding/utils/socketcan-j1939/socketcan-j1939-data.cpp +++ b/low-can-binding/utils/socketcan-j1939/socketcan-j1939-data.cpp @@ -22,47 +22,47 @@ namespace utils { - /** - * @brief Open a socket for receive or send data - * - * @param device_name The device name to open the socket - * @param pgn The pgn to receive only him - * @return int Return the number of the socket - */ - int socketcan_j1939_data_t::open(std::string device_name, pgn_t pgn) - { - int ret = socketcan_j1939_t::open(device_name,htole64(J1939_NAME_ECU),pgn,J1939_NO_ADDR); - if(ret >= 0) - { - if(tx_address_.can_addr.j1939.pgn != J1939_NO_PGN) - { - add_filter(J1939_NO_NAME,tx_address_.can_addr.j1939.pgn,J1939_NO_ADDR,J1939_NO_NAME,J1939_NO_PGN,J1939_NO_ADDR); - } - define_opt(); - } - return ret; - } + /** + * @brief Open a socket for receive or send data + * + * @param device_name The device name to open the socket + * @param pgn The pgn to receive only him + * @return int Return the number of the socket + */ + int socketcan_j1939_data_t::open(std::string device_name, pgn_t pgn) + { + int ret = socketcan_j1939_t::open(device_name,htole64(J1939_NAME_ECU),pgn,J1939_NO_ADDR); + if(ret >= 0) + { + if(tx_address_.can_addr.j1939.pgn != J1939_NO_PGN) + { + add_filter(J1939_NO_NAME,tx_address_.can_addr.j1939.pgn,J1939_NO_ADDR,J1939_NO_NAME,J1939_NO_PGN,J1939_NO_ADDR); + } + define_opt(); + } + return ret; + } - /** - * @brief Write a message but check if the address claiming is operation before - * - * @param obj A j1939 message - * @return int 0 if the write is ok - */ - int socketcan_j1939_data_t::write_message(message_t& obj) - { - std::unique_lock<std::mutex> lock(mutex_claiming_); - application_t &application = application_t::instance(); - socketcan_j1939_addressclaiming_t *socket_addr_claimed = static_cast<socketcan_j1939_addressclaiming_t*>(application.get_socket_address_claiming().get()); - while(socket_addr_claimed->get_state() != claiming_state::OPERATIONAL) - { - socketcan_j1939_t::signal_address_claiming_.wait(lock); - if(socket_addr_claimed->get_state() == claiming_state::INVALID) - { - AFB_ERROR("Invalid state"); - return -1; - } - } - return socketcan_j1939_t::write_message(obj); - } + /** + * @brief Write a message but check if the address claiming is operation before + * + * @param obj A j1939 message + * @return int 0 if the write is ok + */ + int socketcan_j1939_data_t::write_message(message_t& obj) + { + std::unique_lock<std::mutex> lock(mutex_claiming_); + application_t &application = application_t::instance(); + socketcan_j1939_addressclaiming_t *socket_addr_claimed = static_cast<socketcan_j1939_addressclaiming_t*>(application.get_socket_address_claiming().get()); + while(socket_addr_claimed->get_state() != claiming_state::OPERATIONAL) + { + socketcan_j1939_t::signal_address_claiming_.wait(lock); + if(socket_addr_claimed->get_state() == claiming_state::INVALID) + { + AFB_ERROR("Invalid state"); + return -1; + } + } + return socketcan_j1939_t::write_message(obj); + } } diff --git a/low-can-binding/utils/socketcan-j1939/socketcan-j1939.cpp b/low-can-binding/utils/socketcan-j1939/socketcan-j1939.cpp index 25d0f76e..bb74c766 100644 --- a/low-can-binding/utils/socketcan-j1939/socketcan-j1939.cpp +++ b/low-can-binding/utils/socketcan-j1939/socketcan-j1939.cpp @@ -96,7 +96,7 @@ namespace utils * @param recv_own_msgs - Allows you to receive your own packets * @param broadcast - Allows to write message with address brodcast (255) */ - void socketcan_j1939_t::define_opt(bool promisc, bool recv_own_msgs, bool broadcast) + void socketcan_j1939_t::define_opt(bool promisc, bool recv_own_msgs, bool broadcast) { int promisc_i = 0; int recv_own_msgs_i = 0; diff --git a/low-can-binding/utils/socketcan-j1939/socketcan-j1939.hpp b/low-can-binding/utils/socketcan-j1939/socketcan-j1939.hpp index 6c2ea696..f9132972 100644 --- a/low-can-binding/utils/socketcan-j1939/socketcan-j1939.hpp +++ b/low-can-binding/utils/socketcan-j1939/socketcan-j1939.hpp @@ -33,15 +33,15 @@ namespace utils { /** - * @enum state - * @brief The state of the address claiming - */ - enum class claiming_state { - INITIAL, ///< INITIAL - INITIAL state - CLAIMING, ///< CLAIMING - CLAIMING state - OPERATIONAL, ///< OPERATIONAL - OPERATIONAL state - INVALID - }; + * @enum state + * @brief The state of the address claiming + */ + enum class claiming_state { + INITIAL, ///< INITIAL - INITIAL state + CLAIMING, ///< CLAIMING - CLAIMING state + OPERATIONAL, ///< OPERATIONAL - OPERATIONAL state + INVALID + }; class socketcan_j1939_addressclaiming_t; class socketcan_j1939_t : public socketcan_t @@ -65,4 +65,3 @@ namespace utils }; } - |