UdonLibrary
1.0.0
機械システム研究部 C++ ライブラリ
Toggle main menu visibility
読み取り中…
検索中…
一致する文字列を見つけられません
I2cMasterWriter.hpp
[詳解]
1
//
2
// I2c マスター側送信クラス
3
//
4
// Copyright (c) 2022 udonrobo
5
//
6
7
//
8
// master --[I2C]--> slave
9
// ^^^^^^
10
//
11
12
#pragma once
13
14
#include "
I2cBus.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
I2cMasterWriter
26
{
27
public
:
29
using
MessageType
=
Message
;
30
32
static
constexpr
size_t
Size
=
Udon::SerializedSize<MessageType>
();
33
37
I2cMasterWriter
(
Udon::II2cBus
& bus, uint8_t address)
38
: bus(bus)
39
, address(address)
40
, buffer()
41
{
42
}
43
46
void
setMessage
(
const
MessageType
& message)
47
{
48
Udon::Serialize
(message, buffer);
49
bus.beginTransmission(address);
50
bus.write(buffer,
Size
);
51
bus.endTransmission();
52
}
53
55
void
show
()
const
56
{
57
if
(
const
auto
message =
Udon::Deserialize<MessageType>
(buffer))
58
{
59
Udon::Show
(*message);
60
}
61
else
62
{
63
Udon::Show
(
F
(
"unpack failed!"
));
// 通常はここには到達しない
64
}
65
}
66
68
void
showRaw
()
const
69
{
70
Udon::Show
(buffer);
71
}
72
73
private
:
74
Udon::II2cBus
& bus;
75
76
uint8_t address;
77
78
uint8_t buffer[
Size
];
79
};
80
81
}
// namespace Udon
I2cBus.hpp
Serializer.hpp
Show.hpp
F
#define F(x)
Definition
Show.hpp:17
Udon::I2cMasterWriter::I2cMasterWriter
I2cMasterWriter(Udon::II2cBus &bus, uint8_t address)
コンストラクタ
Definition
I2cMasterWriter.hpp:37
Udon::I2cMasterWriter::showRaw
void showRaw() const
送信バッファを表示
Definition
I2cMasterWriter.hpp:68
Udon::I2cMasterWriter::MessageType
Message MessageType
受信メッセージ型
Definition
I2cMasterWriter.hpp:29
Udon::I2cMasterWriter::Size
static constexpr size_t Size
受信バッファサイズ
Definition
I2cMasterWriter.hpp:32
Udon::I2cMasterWriter::show
void show() const
送信内容を表示
Definition
I2cMasterWriter.hpp:55
Udon::I2cMasterWriter::setMessage
void setMessage(const MessageType &message)
送信するメッセージを設定、送信
Definition
I2cMasterWriter.hpp:46
Udon::II2cBus
I2cBus クラスのインターフェース
Definition
I2cBus.hpp:21
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