UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
Im920Writer.hpp
[詳解]
1
//
2
// IM920 送信クラス
3
//
4
// Copyright (c) 2022 udonrobo
5
//
6
7
//
8
// Sender --[UART]--> IM920 ~~[920MHz]~~> IM920 --[UART]--> Receiver
9
// ^^^^^^
10
//
11
12
#pragma once
13
14
#include "
IIm920.hpp
"
15
16
#include <
Udon/Serializer/Serializer.hpp
>
17
#include <
Udon/Utility/Show.hpp
>
18
19
namespace
Udon
20
{
21
24
template
<
typename
Message>
25
class
Im920Writer
26
{
27
public
:
28
static
constexpr
size_t
Size
=
Udon::SerializedSize<Message>
();
29
30
using
MessageType
=
Message
;
31
32
private
:
33
IIm920
& im920;
34
35
uint8_t buffer[
Size
];
36
37
Im920Node
node;
38
39
public
:
40
Im920Writer
(
IIm920
& im920)
41
: im920(im920)
42
, buffer()
43
, node{ buffer,
Size
, 0 }
44
{
45
im920.joinTx(node);
46
}
47
Im920Writer
(
const
Im920Writer
& other)
48
: im920(other.im920)
49
, buffer()
50
, node{ buffer,
Size
, 0 }
51
{
52
im920.joinTx(node);
53
}
54
55
void
setMessage
(
const
Message
& message)
56
{
57
Udon::Serialize
(message, buffer);
58
}
59
61
void
show
()
const
62
{
63
if
(
const
auto
message =
Udon::Deserialize<Message>
(buffer))
64
{
65
Udon::Show
(*message);
66
}
67
else
68
{
69
Serial.print(
F
(
"unpack failed!"
));
70
// ここへ到達する: setMessage()で値を設定していない
71
}
72
}
73
75
void
showRaw
()
const
76
{
77
for
(
auto
&& it : buffer)
78
{
79
Serial.print(it);
80
Serial.print(
'\t'
);
81
}
82
}
83
};
84
}
// namespace Udon
IIm920.hpp
Serializer.hpp
Show.hpp
F
#define F(x)
Definition
Show.hpp:17
Udon::IIm920
IM920のインターフェース
Definition
IIm920.hpp:31
Udon::Im920Writer::MessageType
Message MessageType
Definition
Im920Writer.hpp:30
Udon::Im920Writer::Size
static constexpr size_t Size
Definition
Im920Writer.hpp:28
Udon::Im920Writer::show
void show() const
送信内容を表示
Definition
Im920Writer.hpp:61
Udon::Im920Writer::showRaw
void showRaw() const
送信バッファを表示
Definition
Im920Writer.hpp:75
Udon::Im920Writer::Im920Writer
Im920Writer(const Im920Writer &other)
Definition
Im920Writer.hpp:47
Udon::Im920Writer::Im920Writer
Im920Writer(IIm920 &im920)
Definition
Im920Writer.hpp:40
Udon::Im920Writer::setMessage
void setMessage(const Message &message)
Definition
Im920Writer.hpp:55
Udon::Message
Definition
AirCylinder.hpp:16
Udon
Definition
Bit.hpp:12
Udon::Serialize
bool Serialize(const T &object, ArrayView< uint8_t > buffer)
バッファにシリアル化する
Definition
Serializer.hpp:35
Udon::Deserialize
Udon::Optional< T > Deserialize(ArrayView< const uint8_t > buffer)
バイト列からオブジェクトに逆シリアル化します
Definition
Serializer.hpp:87
Udon::Show
void Show(Args &&... args)
区切り文字ありで出力する
Definition
Show.hpp:339
Udon::SerializedSize
constexpr size_t SerializedSize() noexcept
Tをシリアライズした際のバイト列の要素数を取得する
Definition
Serializer.hpp:22
Udon::Im920Node
IM920ノード
Definition
IIm920.hpp:20