26 changed files with 468 additions and 207 deletions
-
8.gitmodules
-
2CMakeLists.txt
-
56README.md
-
1a8000_protocol
-
22resource/config.ini
-
30resources/config.ini
-
15resources/iflytophald.service
-
32resources/spd_logger_cfg.json
-
106src/components/channel/channel_factory.cpp
-
9src/components/channel/channel_factory.hpp
-
1src/components/channel/idata_channel.hpp
-
33src/components/channel/zexcan_channel.cpp
-
15src/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
-
67src/service/extapi_service.cpp
-
34test/config.ini
-
16test/tomldemo.cpp
-
20thirdlib/spdlogfactory/logger_factory.cpp
-
4thirdlib/spdlogfactory/logger_factory.hpp
-
15tools/deply.sh
@ -1,9 +1,3 @@ |
|||||
[submodule "zcmake"] |
[submodule "zcmake"] |
||||
path = 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 |
|
||||
|
url = zwsd@192.168.1.3:zwsd_common_lib/zcmake.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 "channel_factory.hpp"
|
||||
|
|
||||
|
#include <toml++/toml.hpp>
|
||||
|
|
||||
using namespace iflytop; |
using namespace iflytop; |
||||
using namespace std; |
using namespace std; |
||||
|
|
||||
static IDataChannel::OnData_t s_ondata; |
static IDataChannel::OnData_t s_ondata; |
||||
static map<string, IDataChannel *> s_channels; |
|
||||
|
|
||||
map<string, IDataChannel *> ChannelFactory::createChannels(string cfgfile) { |
|
||||
ZCanChannel *canChannel = new ZCanChannel("zcan", "can0", 500000); |
|
||||
canChannel->initialize(); |
|
||||
canChannel->registerOnDataCallback([](IDataChannel *ch, const string &data) { |
|
||||
if (s_ondata) s_ondata(ch, data); |
|
||||
}); |
|
||||
s_channels[canChannel->getChannelName()] = canChannel; |
|
||||
return s_channels; |
|
||||
|
|
||||
// canChannel->initialize(can_if_name, baudrate);
|
|
||||
// channels["zcan"] = canChannel;
|
|
||||
|
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); |
||||
|
|
||||
|
ZExCanChannel *canChannel = new ZExCanChannel(type, ifname, baudrate); |
||||
|
canChannel->initialize(); |
||||
|
canChannel->registerOnDataCallback([](IDataChannel *ch, const string &data) { |
||||
|
if (s_ondata) s_ondata(ch, data); |
||||
|
}); |
||||
|
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); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} 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; } |
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 |
baudrate=500000 |
||||
enable=true |
enable=true |
||||
|
|
||||
[printer] |
|
||||
type=uart |
|
||||
ifname=/dev/ttyS1 |
|
||||
|
[[channels]] |
||||
|
type="uart" |
||||
|
name="printer" |
||||
|
ifname="/dev/ttyS1" |
||||
baudrate=115200 |
baudrate=115200 |
||||
enable=true |
enable=true |
||||
|
|
||||
[emergency-key] |
|
||||
type=input-key |
|
||||
pinnum=GPIO2-A3 |
|
||||
|
[[channels]] |
||||
|
type="inputkey" |
||||
|
name="emergency-key" |
||||
|
pinnum="GPIO2-A3" |
||||
enable=true |
enable=true |
||||
|
|
||||
[lis] |
|
||||
type=uart |
|
||||
ifname=/dev/ttyS2 |
|
||||
|
[[channels]] |
||||
|
type="uart" |
||||
|
name="lis" |
||||
|
ifname="/dev/ttyS2" |
||||
baudrate=115200 |
baudrate=115200 |
||||
enable=true |
|
||||
|
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