26 changed files with 468 additions and 207 deletions
-
6.gitmodules
-
2CMakeLists.txt
-
56README.md
-
1a8000_protocol
-
22resource/config.ini
-
30resources/config.ini
-
15resources/iflytophald.service
-
32resources/spd_logger_cfg.json
-
94src/components/channel/channel_factory.cpp
-
7src/components/channel/channel_factory.hpp
-
1src/components/channel/idata_channel.hpp
-
33src/components/channel/zexcan_channel.cpp
-
9src/components/channel/zexcan_channel.hpp
-
2src/components/zcanreceiver/zcanreceiverhost.hpp
-
25src/configs/gconfig.hpp
-
1src/configs/project_setting.hpp
-
4src/main.cpp
-
9src/service/app_config_service.cpp
-
65src/service/extapi_service.cpp
-
32test/config.ini
-
16test/tomldemo.cpp
-
20thirdlib/spdlogfactory/logger_factory.cpp
-
4thirdlib/spdlogfactory/logger_factory.hpp
-
15tools/deply.sh
@ -1,9 +1,3 @@ |
|||
[submodule "zcmake"] |
|||
path = zcmake |
|||
url = zwsd@192.168.1.3:zwsd_common_lib/zcmake.git |
|||
[submodule "iflytoplinuxsdk"] |
|||
path = iflytoplinuxsdk |
|||
url = zwsd@192.168.1.3:project_boditech_vidas_a8000_v2/boditech_vidas_a8000_sdk.git |
|||
[submodule "a8000_protocol"] |
|||
path = a8000_protocol |
|||
url = zwsd@192.168.1.3:project_boditech_vidas_a8000_v3/a8000_protocol.git |
@ -1,22 +0,0 @@ |
|||
[can] |
|||
type=zexcan |
|||
ifname=can0 |
|||
baudrate=500000 |
|||
enable=true |
|||
|
|||
[printer] |
|||
type=uart |
|||
ifname=/dev/ttyS1 |
|||
baudrate=115200 |
|||
enable=true |
|||
|
|||
[emergency-key] |
|||
type=input-key |
|||
pinnum=GPIO2-A3 |
|||
enable=true |
|||
|
|||
[lis] |
|||
type=uart |
|||
ifname=/dev/ttyS2 |
|||
baudrate=115200 |
|||
enable=true |
@ -0,0 +1,30 @@ |
|||
[server] |
|||
cmdport=19004 |
|||
wsport=19005 |
|||
|
|||
[[channels]] |
|||
type="zexcan" |
|||
name="zcan" |
|||
ifname="can0" |
|||
baudrate=500000 |
|||
enable=true |
|||
|
|||
[[channels]] |
|||
type="uart" |
|||
name="printer" |
|||
ifname="/dev/ttyS1" |
|||
baudrate=115200 |
|||
enable=true |
|||
|
|||
[[channels]] |
|||
type="inputkey" |
|||
name="emergency-key" |
|||
pinnum="GPIO2-A3" |
|||
enable=true |
|||
|
|||
[[channels]] |
|||
type="uart" |
|||
name="lis" |
|||
ifname="/dev/ttyS2" |
|||
baudrate=115200 |
|||
enable=true |
@ -0,0 +1,15 @@ |
|||
[Unit] |
|||
# 服务名称,可自定义 |
|||
Description = iflytop hal daemon |
|||
After = network.target |
|||
Wants = network.target |
|||
|
|||
[Service] |
|||
Type = simple |
|||
ExecStart = /iflytopd/iflytophald/iflytophald |
|||
Restart=always |
|||
RestartSec=2 |
|||
WorkingDirectory=/iflytopd/iflytophald/ |
|||
|
|||
[Install] |
|||
WantedBy = multi-user.target |
@ -0,0 +1,32 @@ |
|||
[ |
|||
{ |
|||
"name": "info-sink", |
|||
"type": "daily_file_sink_mt", |
|||
"filename": "logs/infolog.log", |
|||
"max_files": 30, |
|||
"rotate_on_open": true, |
|||
"level": 2 |
|||
}, |
|||
{ |
|||
"name": "debug-sink", |
|||
"type": "daily_file_sink_mt", |
|||
"filename": "logs/debuglog.log", |
|||
"max_files": 10, |
|||
"rotate_on_open": true, |
|||
"level": 0 |
|||
}, |
|||
{ |
|||
"name": "terminal-sink", |
|||
"type": "stdout_color_sink_mt" |
|||
}, |
|||
{ |
|||
"name": "root", |
|||
"type": "logger", |
|||
"level": 2, |
|||
"sinks": [ |
|||
"terminal-sink", |
|||
"debug-sink", |
|||
"info-sink" |
|||
] |
|||
} |
|||
] |
@ -1,22 +1,102 @@ |
|||
#include "channel_factory.hpp"
|
|||
|
|||
#include <toml++/toml.hpp>
|
|||
|
|||
using namespace iflytop; |
|||
using namespace std; |
|||
|
|||
static IDataChannel::OnData_t s_ondata; |
|||
static map<string, IDataChannel *> s_channels; |
|||
static map<string, IDataChannel *> s_channelMap; |
|||
static list<IDataChannel *> s_channelList; |
|||
|
|||
// [server]
|
|||
// cmdport=19004
|
|||
// wsport=19005
|
|||
|
|||
// [[channels]]
|
|||
// type="zexcan"
|
|||
// name="zcan"
|
|||
// ifname="can0"
|
|||
// baudrate=500000
|
|||
// enable=true
|
|||
|
|||
// [[channels]]
|
|||
// type="uart"
|
|||
// name="printer"
|
|||
// ifname="/dev/ttyS1"
|
|||
// baudrate=115200
|
|||
// enable=true
|
|||
|
|||
// [[channels]]
|
|||
// type="inputkey"
|
|||
// name="emergency-key"
|
|||
// pinnum="GPIO2-A3"
|
|||
// enable=true
|
|||
|
|||
// [[channels]]
|
|||
// type="uart"
|
|||
// name="lis"
|
|||
// ifname="/dev/ttyS2"
|
|||
// baudrate=115200
|
|||
// enable=true
|
|||
|
|||
map<string, IDataChannel *> ChannelFactory::createChannels(toml::table &config) { |
|||
auto logger = GET_LOGGER(ChannelFactory); |
|||
|
|||
try { |
|||
if (auto channels = config["channels"].as_array()) { |
|||
for (size_t i = 0; i < channels->size(); i++) { |
|||
string type = config["channels"][i]["type"].value_or(""); |
|||
|
|||
/**
|
|||
* @brief |
|||
* Build zexcan channel |
|||
*/ |
|||
if (type == "zexcan") { |
|||
string name = config["channels"][i]["name"].value_or("zcan"); |
|||
string ifname = config["channels"][i]["ifname"].value_or("can0"); |
|||
int baudrate = config["channels"][i]["baudrate"].value_or(500000); |
|||
bool enable = config["channels"][i]["enable"].value_or(true); |
|||
|
|||
if (enable) { |
|||
logger->info("==================create channel {}=================", name); |
|||
logger->info("create channel: {}, type={}, ifname={}, baudrate={}", name, type, ifname, baudrate); |
|||
|
|||
map<string, IDataChannel *> ChannelFactory::createChannels(string cfgfile) { |
|||
ZCanChannel *canChannel = new ZCanChannel("zcan", "can0", 500000); |
|||
ZExCanChannel *canChannel = new ZExCanChannel(type, ifname, baudrate); |
|||
canChannel->initialize(); |
|||
canChannel->registerOnDataCallback([](IDataChannel *ch, const string &data) { |
|||
if (s_ondata) s_ondata(ch, data); |
|||
}); |
|||
s_channels[canChannel->getChannelName()] = canChannel; |
|||
return s_channels; |
|||
s_channelMap[canChannel->getChannelName()] = canChannel; |
|||
s_channelList.push_back(canChannel); |
|||
logger->info(""); |
|||
} else { |
|||
logger->warn("skip channel: {}, enable=false", name); |
|||
} |
|||
} |
|||
//
|
|||
else if (type == "uart") { |
|||
string name = config["channels"][i]["name"].value_or("uart"); |
|||
string ifname = config["channels"][i]["ifname"].value_or("/dev/ttyS1"); |
|||
int baudrate = config["channels"][i]["baudrate"].value_or(115200); |
|||
bool enable = config["channels"][i]["enable"].value_or(true); |
|||
|
|||
if (enable) { |
|||
logger->info("create channel: {}, type={}, ifname={}, baudrate={}", name, type, ifname, baudrate); |
|||
} else { |
|||
logger->warn("skip channel: {}, enable=false", name); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// canChannel->initialize(can_if_name, baudrate);
|
|||
// channels["zcan"] = canChannel;
|
|||
} catch (const toml::parse_error &err) { |
|||
logger->error("parse config error, {}", err); |
|||
} |
|||
|
|||
return s_channelMap; |
|||
} |
|||
|
|||
void ChannelFactory::regOnChannelData(IDataChannel::OnData_t ondata) { s_ondata = ondata; } |
|||
|
|||
list<IDataChannel *> ChannelFactory::getChannels() { return s_channelList; } |
@ -1,25 +0,0 @@ |
|||
|
|||
#pragma once
|
|||
#include <exception>
|
|||
#include <fstream>
|
|||
#include <iostream>
|
|||
#include <list>
|
|||
#include <map>
|
|||
#include <memory>
|
|||
#include <mutex>
|
|||
#include <set>
|
|||
#include <sstream>
|
|||
#include <string>
|
|||
#include <vector>
|
|||
|
|||
#include "components/config_template/config_template.hpp"
|
|||
|
|||
#define ConfigELEMENT_LIST(marco) \
|
|||
marco(string /* */, deviceId, "") /*设备ID*/ \ |
|||
marco(string /* */, canName, "can0") /*子设备Can设备名称*/ \ |
|||
marco(int32_t /* */, canBaudRate, 500000) /*Can波特率*/ |
|||
|
|||
configTemplateDEFILE_CONFIG_SERVICE2( //
|
|||
GConfig, //
|
|||
ConfigELEMENT_LIST, //
|
|||
"./configs/config.json", {}); |
@ -1 +0,0 @@ |
|||
#pragma once
|
@ -0,0 +1,9 @@ |
|||
#include "app_config_service.hpp"
|
|||
|
|||
using namespace iflytop; |
|||
|
|||
void AppConfigService::initialize() { |
|||
|
|||
|
|||
|
|||
} |
@ -1,22 +1,30 @@ |
|||
[can] |
|||
type=zexcan |
|||
ifname=can0 |
|||
[server] |
|||
cmdport=19004 |
|||
wsport=19005 |
|||
|
|||
[[channels]] |
|||
type="zexcan" |
|||
name="zcan" |
|||
ifname="can0" |
|||
baudrate=500000 |
|||
enable=true |
|||
|
|||
[printer] |
|||
type=uart |
|||
ifname=/dev/ttyS1 |
|||
[[channels]] |
|||
type="uart" |
|||
name="printer" |
|||
ifname="/dev/ttyS1" |
|||
baudrate=115200 |
|||
enable=true |
|||
|
|||
[emergency-key] |
|||
type=input-key |
|||
pinnum=GPIO2-A3 |
|||
[[channels]] |
|||
type="inputkey" |
|||
name="emergency-key" |
|||
pinnum="GPIO2-A3" |
|||
enable=true |
|||
|
|||
[lis] |
|||
type=uart |
|||
ifname=/dev/ttyS2 |
|||
[[channels]] |
|||
type="uart" |
|||
name="lis" |
|||
ifname="/dev/ttyS2" |
|||
baudrate=115200 |
|||
enable=true |
@ -0,0 +1,15 @@ |
|||
#!/bin/bash |
|||
|
|||
# ./deploy.sh root@192.168.8.10 |
|||
|
|||
if [ $# -ne 1 ]; then |
|||
echo "Usage: $0 user@host" |
|||
exit 1 |
|||
fi |
|||
|
|||
server=$1 |
|||
ssh $server 'mkdir -p /iflytopd/iflytophald/' |
|||
scp ./build/app/iflytophald $server:/iflytopd/iflytophald/ |
|||
# scp ./resources/iflytophald.service $server:/lib/systemd/system/ |
|||
scp ./resources/config.ini $server:/iflytopd/iflytophald/ |
|||
scp ./resources/spd_logger_cfg.json $server:/iflytopd/iflytophald/ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue