UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
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
17#include <Udon/Utility/Show.hpp>
18
19namespace Udon
20{
21
24 template <typename Message>
26 {
27 public:
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
#define F(x)
Definition Show.hpp:17
I2cMasterWriter(Udon::II2cBus &bus, uint8_t address)
コンストラクタ
Definition I2cMasterWriter.hpp:37
void showRaw() const
送信バッファを表示
Definition I2cMasterWriter.hpp:68
Message MessageType
受信メッセージ型
Definition I2cMasterWriter.hpp:29
static constexpr size_t Size
受信バッファサイズ
Definition I2cMasterWriter.hpp:32
void show() const
送信内容を表示
Definition I2cMasterWriter.hpp:55
void setMessage(const MessageType &message)
送信するメッセージを設定、送信
Definition I2cMasterWriter.hpp:46
I2cBus クラスのインターフェース
Definition I2cBus.hpp:21
Definition AirCylinder.hpp:16
Definition Bit.hpp:12
bool Serialize(const T &object, ArrayView< uint8_t > buffer)
バッファにシリアル化する
Definition Serializer.hpp:35
Udon::Optional< T > Deserialize(ArrayView< const uint8_t > buffer)
バイト列からオブジェクトに逆シリアル化します
Definition Serializer.hpp:87
void Show(Args &&... args)
区切り文字ありで出力する
Definition Show.hpp:339
constexpr size_t SerializedSize() noexcept
Tをシリアライズした際のバイト列の要素数を取得する
Definition Serializer.hpp:22