radio_tool 0.2.1
Loading...
Searching...
No Matches
tyt_dfu.cpp
1
18#include <radio_tool/dfu/tyt_dfu.hpp>
19#include <radio_tool/dfu/dfu_exception.hpp>
20#include <radio_tool/util.hpp>
21
22#include <cstring>
23
24using namespace radio_tool::dfu;
25
26auto TYTDFU::IdentifyDevice() const -> std::string
27{
28 auto data = ReadRegister(TYTRegister::RadioInfo);
29
30 //model is null-terminated str, get len with strlen
31 auto slen = strlen((const char*)data.data());
32 return std::string(data.begin(), data.begin() + slen + 1);
33}
34
35auto TYTDFU::ReadRegister(const TYTRegister& reg) const -> std::vector<uint8_t>
36{
37 Download({ static_cast<uint8_t>(TYTDFU::RegisterCommand),
38 static_cast<uint8_t>(reg) });
39
40 return Upload(TYTDFU::RegisterSize);
41}
42
43auto TYTDFU::GetTime() const -> time_t
44{
45 InitUpload();
46 auto time = ReadRegister(TYTRegister::RTC);
47
48 return ParseBCDTimestamp(time.data());
49}
50
51auto TYTDFU::SetTime() const -> void
52{
53 Download({ TYTDFU::CustomCommand,
54 static_cast<uint8_t>(TYTCommand::SetRTC) });
55
56 time_t rawtime;
57 time(&rawtime);
58 auto timeinfo = localtime(&rawtime);
59 auto ts = MakeBCDTimestamp(*timeinfo);
60 ts.insert(ts.begin(), 0xb5);
61
62 Download(ts);
63 //Reboot();
64}
65
66auto TYTDFU::Reboot() const -> void
67{
68 Download({ TYTDFU::CustomCommand,
69 static_cast<uint8_t>(TYTCommand::ProgrammingMode) });
70
71 //this will normally throw an exception because the device
72 //will not respond it will reboot immediately
73 Download({ TYTDFU::CustomCommand,
74 static_cast<uint8_t>(TYTCommand::Reboot) });
75}
76
77auto TYTDFU::SendTYTCommand(const TYTCommand& cmd) const -> void
78{
79 Download({ TYTDFU::CustomCommand,
80 static_cast<uint8_t>(cmd) });
81}
auto InitUpload() const -> void
Definition: dfu.cpp:177
auto SetTime() const -> void
Definition: tyt_dfu.cpp:51
auto SendTYTCommand(const TYTCommand &cmd) const -> void
Definition: tyt_dfu.cpp:77
auto GetTime() const -> time_t
Definition: tyt_dfu.cpp:43
auto ReadRegister(const TYTRegister &reg) const -> std::vector< uint8_t >
Definition: tyt_dfu.cpp:35
auto IdentifyDevice() const -> std::string
Definition: tyt_dfu.cpp:26
auto Reboot() const -> void
Definition: tyt_dfu.cpp:66