UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
E220Writer.hpp
[詳解]
1
//
2
// E220 無線モジュール送信クラス
3
//
4
// Copyright (c) 2022 udonrobo
5
//
6
7
#pragma once
8
9
#include <
Udon/Serializer/Serializer.hpp
>
10
#include "
E220Base.hpp
"
11
12
namespace
Udon
13
{
14
17
template
<
typename
T>
18
class
E220Writer
19
:
public
Impl::E220Base
20
{
21
public
:
23
static
constexpr
size_t
Size
=
Udon::SerializedSize<T>
();
24
26
using
MessageType
= T;
27
30
E220Writer
(
const
Config
&
config
)
31
:
E220Base
(
config
)
32
{
33
}
34
38
bool
isTransmitting
(uint32_t timeoutMs = 200)
const
39
{
40
return
(micros() - lastTransmitUs) / 1000. < timeoutMs;
41
}
42
44
void
begin
()
45
{
46
E220Base::begin();
47
}
48
51
void
begin
(uint8_t channel)
noexcept
52
{
53
config
.channel = channel;
54
begin
();
55
}
56
59
void
setMessage
(
const
MessageType
& message)
60
{
61
if
(micros() - lastTransmitUs > 100 and digitalRead(
config
.aux) == HIGH)
62
{
63
uint8_t buffer[
Size
];
64
Udon::Serialize
(message, buffer);
65
config
.serial.write(uint8_t(
config
.address >> 8));
66
config
.serial.write(uint8_t(
config
.address >> 0));
67
config
.serial.write(uint8_t(
config
.channel));
68
config
.serial.write(buffer,
sizeof
buffer);
69
lastTransmitUs = micros();
70
}
71
}
72
73
private
:
74
uint32_t lastTransmitUs = 0;
75
};
76
77
}
// namespace Udon
E220Base.hpp
Serializer.hpp
Udon::E220Writer::E220Writer
E220Writer(const Config &config)
コンストラクタ
Definition
E220Writer.hpp:30
Udon::E220Writer::begin
void begin(uint8_t channel) noexcept
受信開始
Definition
E220Writer.hpp:51
Udon::E220Writer::MessageType
T MessageType
メッセージ型
Definition
E220Writer.hpp:26
Udon::E220Writer::begin
void begin()
送信開始
Definition
E220Writer.hpp:44
Udon::E220Writer::setMessage
void setMessage(const MessageType &message)
メッセージを送信
Definition
E220Writer.hpp:59
Udon::E220Writer::Size
static constexpr size_t Size
メッセージサイズ
Definition
E220Writer.hpp:23
Udon::E220Writer::isTransmitting
bool isTransmitting(uint32_t timeoutMs=200) const
送信中かどうか
Definition
E220Writer.hpp:38
Udon::Impl::E220Base
E220 ベースクラス
Definition
E220Base.hpp:12
Udon::Impl::E220Base::config
Config config
Definition
E220Base.hpp:58
Udon::Impl::E220Base::E220Base
E220Base(const Config &config)
コンストラクタ
Definition
E220Base.hpp:62
Udon
Definition
Bit.hpp:12
Udon::Serialize
bool Serialize(const T &object, ArrayView< uint8_t > buffer)
バッファにシリアル化する
Definition
Serializer.hpp:35
Udon::SerializedSize
constexpr size_t SerializedSize() noexcept
Tをシリアライズした際のバイト列の要素数を取得する
Definition
Serializer.hpp:22
Udon::Impl::E220Base::Config
設定
Definition
E220Base.hpp:16