diff --git a/OVMS.V3/components/can/src/canformat_panda.cpp b/OVMS.V3/components/can/src/canformat_panda.cpp new file mode 100644 index 0000000..3e0251f --- /dev/null +++ b/OVMS.V3/components/can/src/canformat_panda.cpp @@ -0,0 +1,88 @@ +/* +; Project: Open Vehicle Monitor System +; Module: CAN dump framework +; Date: 18th January 2018 +; +; (C) 2022 Mark Webb-Johnson +; +; Permission is hereby granted, free of charge, to any person obtaining a copy +; of this software and associated documentation files (the "Software"), to deal +; in the Software without restriction, including without limitation the rights +; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +; copies of the Software, and to permit persons to whom the Software is +; furnished to do so, subject to the following conditions: +; +; The above copyright notice and this permission notice shall be included in +; all copies or substantial portions of the Software. +; +; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +; THE SOFTWARE. +*/ + +#include "ovms_log.h" +static const char *TAG = "canformat-panda"; + +#include +#include "pcp.h" +#include "canlog.h" +#include "canformat_panda.h" +#include "ovms_utils.h" + +class OvmsCanFormatPandaInit + { + public: OvmsCanFormatPandaInit(); +} MyOvmsCanFormatPandaInit __attribute__ ((init_priority (4505))); + +OvmsCanFormatPandaInit::OvmsCanFormatPandaInit() + { + ESP_LOGI(TAG, "Registering CAN Format: PANDA (4505)"); + + MyCanFormatFactory.RegisterCanFormat("panda"); + } + +canformat_panda::canformat_panda(const char *type) + : canformat(type) + { + } + +canformat_panda::~canformat_panda() + { + } + +std::string canformat_panda::get(CAN_log_message_t* message) + { + struct + { + uint32_t w1; + uint32_t w2; + uint64_t data; + } packet; + + switch (message->type) + { + case CAN_LogFrame_RX: + case CAN_LogFrame_TX: + packet.w1 = (uint32_t)message->frame.MsgID <<21; + packet.w2 = (message->frame.FIR.B.DLC & 0x0f) | (message->origin->m_busnumber << 4); + memcpy(&packet.data, message->frame.data.u8, 8); + return std::string((char*)&packet,sizeof(packet)); + + default: + return std::string(""); + } + } + +std::string canformat_panda::getheader(struct timeval *time) + { + return std::string(""); + } + +size_t canformat_panda::put(CAN_log_message_t* message, uint8_t *buffer, size_t len, bool* hasmore, canlogconnection* clc) + { + return len; // Just ignore incoming data + } diff --git a/OVMS.V3/components/can/src/canformat_panda.h b/OVMS.V3/components/can/src/canformat_panda.h new file mode 100644 index 0000000..95ab003 --- /dev/null +++ b/OVMS.V3/components/can/src/canformat_panda.h @@ -0,0 +1,44 @@ +/* +; Project: Open Vehicle Monitor System +; Module: CAN dump CRTD format +; Date: 18th January 2018 +; +; (C) 2022 Mark Webb-Johnson +; +; Permission is hereby granted, free of charge, to any person obtaining a copy +; of this software and associated documentation files (the "Software"), to deal +; in the Software without restriction, including without limitation the rights +; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +; copies of the Software, and to permit persons to whom the Software is +; furnished to do so, subject to the following conditions: +; +; The above copyright notice and this permission notice shall be included in +; all copies or substantial portions of the Software. +; +; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +; THE SOFTWARE. +*/ + +#ifndef __CANFORMAT_PANDA_H__ +#define __CANFORMAT_PANDA_H__ + +#include "canformat.h" + +class canformat_panda : public canformat + { + public: + canformat_panda(const char* type); + virtual ~canformat_panda(); + + public: + virtual std::string get(CAN_log_message_t* message); + virtual std::string getheader(struct timeval *time); + virtual size_t put(CAN_log_message_t* message, uint8_t *buffer, size_t len, bool* hasmore, canlogconnection* clc=NULL); + }; + +#endif // __CANFORMAT_PANDA_H__