#[allow(unused_imports)]
use crate::{
byte_converter::*,
converting_receiver::{BrickletError, BrickletRecvTimeoutError},
device::*,
error::TinkerforgeError,
ip_connection::async_io::AsyncIpConnection,
low_level_traits::LowLevelRead,
};
#[allow(unused_imports)]
use futures_core::Stream;
#[allow(unused_imports)]
use tokio_stream::StreamExt;
pub enum Lcd128x64BrickletFunction {
WritePixelsLowLevel,
ReadPixelsLowLevel,
ClearDisplay,
SetDisplayConfiguration,
GetDisplayConfiguration,
WriteLine,
DrawBufferedFrame,
GetTouchPosition,
SetTouchPositionCallbackConfiguration,
GetTouchPositionCallbackConfiguration,
GetTouchGesture,
SetTouchGestureCallbackConfiguration,
GetTouchGestureCallbackConfiguration,
DrawLine,
DrawBox,
DrawText,
SetGuiButton,
GetGuiButton,
RemoveGuiButton,
SetGuiButtonPressedCallbackConfiguration,
GetGuiButtonPressedCallbackConfiguration,
GetGuiButtonPressed,
SetGuiSlider,
GetGuiSlider,
RemoveGuiSlider,
SetGuiSliderValueCallbackConfiguration,
GetGuiSliderValueCallbackConfiguration,
GetGuiSliderValue,
SetGuiTabConfiguration,
GetGuiTabConfiguration,
SetGuiTabText,
GetGuiTabText,
SetGuiTabIcon,
GetGuiTabIcon,
RemoveGuiTab,
SetGuiTabSelected,
SetGuiTabSelectedCallbackConfiguration,
GetGuiTabSelectedCallbackConfiguration,
GetGuiTabSelected,
SetGuiGraphConfiguration,
GetGuiGraphConfiguration,
SetGuiGraphDataLowLevel,
GetGuiGraphDataLowLevel,
RemoveGuiGraph,
RemoveAllGui,
SetTouchLedConfig,
GetTouchLedConfig,
GetSpitfpErrorCount,
SetBootloaderMode,
GetBootloaderMode,
SetWriteFirmwarePointer,
WriteFirmware,
SetStatusLedConfig,
GetStatusLedConfig,
GetChipTemperature,
Reset,
WriteUid,
ReadUid,
GetIdentity,
CallbackTouchPosition,
CallbackTouchGesture,
CallbackGuiButtonPressed,
CallbackGuiSliderValue,
CallbackGuiTabSelected,
}
impl From<Lcd128x64BrickletFunction> for u8 {
fn from(fun: Lcd128x64BrickletFunction) -> Self {
match fun {
Lcd128x64BrickletFunction::WritePixelsLowLevel => 1,
Lcd128x64BrickletFunction::ReadPixelsLowLevel => 2,
Lcd128x64BrickletFunction::ClearDisplay => 3,
Lcd128x64BrickletFunction::SetDisplayConfiguration => 4,
Lcd128x64BrickletFunction::GetDisplayConfiguration => 5,
Lcd128x64BrickletFunction::WriteLine => 6,
Lcd128x64BrickletFunction::DrawBufferedFrame => 7,
Lcd128x64BrickletFunction::GetTouchPosition => 8,
Lcd128x64BrickletFunction::SetTouchPositionCallbackConfiguration => 9,
Lcd128x64BrickletFunction::GetTouchPositionCallbackConfiguration => 10,
Lcd128x64BrickletFunction::GetTouchGesture => 12,
Lcd128x64BrickletFunction::SetTouchGestureCallbackConfiguration => 13,
Lcd128x64BrickletFunction::GetTouchGestureCallbackConfiguration => 14,
Lcd128x64BrickletFunction::DrawLine => 16,
Lcd128x64BrickletFunction::DrawBox => 17,
Lcd128x64BrickletFunction::DrawText => 18,
Lcd128x64BrickletFunction::SetGuiButton => 19,
Lcd128x64BrickletFunction::GetGuiButton => 20,
Lcd128x64BrickletFunction::RemoveGuiButton => 21,
Lcd128x64BrickletFunction::SetGuiButtonPressedCallbackConfiguration => 22,
Lcd128x64BrickletFunction::GetGuiButtonPressedCallbackConfiguration => 23,
Lcd128x64BrickletFunction::GetGuiButtonPressed => 24,
Lcd128x64BrickletFunction::SetGuiSlider => 26,
Lcd128x64BrickletFunction::GetGuiSlider => 27,
Lcd128x64BrickletFunction::RemoveGuiSlider => 28,
Lcd128x64BrickletFunction::SetGuiSliderValueCallbackConfiguration => 29,
Lcd128x64BrickletFunction::GetGuiSliderValueCallbackConfiguration => 30,
Lcd128x64BrickletFunction::GetGuiSliderValue => 31,
Lcd128x64BrickletFunction::SetGuiTabConfiguration => 33,
Lcd128x64BrickletFunction::GetGuiTabConfiguration => 34,
Lcd128x64BrickletFunction::SetGuiTabText => 35,
Lcd128x64BrickletFunction::GetGuiTabText => 36,
Lcd128x64BrickletFunction::SetGuiTabIcon => 37,
Lcd128x64BrickletFunction::GetGuiTabIcon => 38,
Lcd128x64BrickletFunction::RemoveGuiTab => 39,
Lcd128x64BrickletFunction::SetGuiTabSelected => 40,
Lcd128x64BrickletFunction::SetGuiTabSelectedCallbackConfiguration => 41,
Lcd128x64BrickletFunction::GetGuiTabSelectedCallbackConfiguration => 42,
Lcd128x64BrickletFunction::GetGuiTabSelected => 43,
Lcd128x64BrickletFunction::SetGuiGraphConfiguration => 45,
Lcd128x64BrickletFunction::GetGuiGraphConfiguration => 46,
Lcd128x64BrickletFunction::SetGuiGraphDataLowLevel => 47,
Lcd128x64BrickletFunction::GetGuiGraphDataLowLevel => 48,
Lcd128x64BrickletFunction::RemoveGuiGraph => 49,
Lcd128x64BrickletFunction::RemoveAllGui => 50,
Lcd128x64BrickletFunction::SetTouchLedConfig => 51,
Lcd128x64BrickletFunction::GetTouchLedConfig => 52,
Lcd128x64BrickletFunction::GetSpitfpErrorCount => 234,
Lcd128x64BrickletFunction::SetBootloaderMode => 235,
Lcd128x64BrickletFunction::GetBootloaderMode => 236,
Lcd128x64BrickletFunction::SetWriteFirmwarePointer => 237,
Lcd128x64BrickletFunction::WriteFirmware => 238,
Lcd128x64BrickletFunction::SetStatusLedConfig => 239,
Lcd128x64BrickletFunction::GetStatusLedConfig => 240,
Lcd128x64BrickletFunction::GetChipTemperature => 242,
Lcd128x64BrickletFunction::Reset => 243,
Lcd128x64BrickletFunction::WriteUid => 248,
Lcd128x64BrickletFunction::ReadUid => 249,
Lcd128x64BrickletFunction::GetIdentity => 255,
Lcd128x64BrickletFunction::CallbackTouchPosition => 11,
Lcd128x64BrickletFunction::CallbackTouchGesture => 15,
Lcd128x64BrickletFunction::CallbackGuiButtonPressed => 25,
Lcd128x64BrickletFunction::CallbackGuiSliderValue => 32,
Lcd128x64BrickletFunction::CallbackGuiTabSelected => 44,
}
}
}
pub const LCD_128X64_BRICKLET_GESTURE_LEFT_TO_RIGHT: u8 = 0;
pub const LCD_128X64_BRICKLET_GESTURE_RIGHT_TO_LEFT: u8 = 1;
pub const LCD_128X64_BRICKLET_GESTURE_TOP_TO_BOTTOM: u8 = 2;
pub const LCD_128X64_BRICKLET_GESTURE_BOTTOM_TO_TOP: u8 = 3;
pub const LCD_128X64_BRICKLET_COLOR_WHITE: bool = false;
pub const LCD_128X64_BRICKLET_COLOR_BLACK: bool = true;
pub const LCD_128X64_BRICKLET_FONT_6X8: u8 = 0;
pub const LCD_128X64_BRICKLET_FONT_6X16: u8 = 1;
pub const LCD_128X64_BRICKLET_FONT_6X24: u8 = 2;
pub const LCD_128X64_BRICKLET_FONT_6X32: u8 = 3;
pub const LCD_128X64_BRICKLET_FONT_12X16: u8 = 4;
pub const LCD_128X64_BRICKLET_FONT_12X24: u8 = 5;
pub const LCD_128X64_BRICKLET_FONT_12X32: u8 = 6;
pub const LCD_128X64_BRICKLET_FONT_18X24: u8 = 7;
pub const LCD_128X64_BRICKLET_FONT_18X32: u8 = 8;
pub const LCD_128X64_BRICKLET_FONT_24X32: u8 = 9;
pub const LCD_128X64_BRICKLET_DIRECTION_HORIZONTAL: u8 = 0;
pub const LCD_128X64_BRICKLET_DIRECTION_VERTICAL: u8 = 1;
pub const LCD_128X64_BRICKLET_CHANGE_TAB_ON_CLICK: u8 = 1;
pub const LCD_128X64_BRICKLET_CHANGE_TAB_ON_SWIPE: u8 = 2;
pub const LCD_128X64_BRICKLET_CHANGE_TAB_ON_CLICK_AND_SWIPE: u8 = 3;
pub const LCD_128X64_BRICKLET_GRAPH_TYPE_DOT: u8 = 0;
pub const LCD_128X64_BRICKLET_GRAPH_TYPE_LINE: u8 = 1;
pub const LCD_128X64_BRICKLET_GRAPH_TYPE_BAR: u8 = 2;
pub const LCD_128X64_BRICKLET_TOUCH_LED_CONFIG_OFF: u8 = 0;
pub const LCD_128X64_BRICKLET_TOUCH_LED_CONFIG_ON: u8 = 1;
pub const LCD_128X64_BRICKLET_TOUCH_LED_CONFIG_SHOW_HEARTBEAT: u8 = 2;
pub const LCD_128X64_BRICKLET_TOUCH_LED_CONFIG_SHOW_TOUCH: u8 = 3;
pub const LCD_128X64_BRICKLET_BOOTLOADER_MODE_BOOTLOADER: u8 = 0;
pub const LCD_128X64_BRICKLET_BOOTLOADER_MODE_FIRMWARE: u8 = 1;
pub const LCD_128X64_BRICKLET_BOOTLOADER_MODE_BOOTLOADER_WAIT_FOR_REBOOT: u8 = 2;
pub const LCD_128X64_BRICKLET_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_REBOOT: u8 = 3;
pub const LCD_128X64_BRICKLET_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_ERASE_AND_REBOOT: u8 = 4;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_OK: u8 = 0;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_INVALID_MODE: u8 = 1;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_NO_CHANGE: u8 = 2;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_ENTRY_FUNCTION_NOT_PRESENT: u8 = 3;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_DEVICE_IDENTIFIER_INCORRECT: u8 = 4;
pub const LCD_128X64_BRICKLET_BOOTLOADER_STATUS_CRC_MISMATCH: u8 = 5;
pub const LCD_128X64_BRICKLET_STATUS_LED_CONFIG_OFF: u8 = 0;
pub const LCD_128X64_BRICKLET_STATUS_LED_CONFIG_ON: u8 = 1;
pub const LCD_128X64_BRICKLET_STATUS_LED_CONFIG_SHOW_HEARTBEAT: u8 = 2;
pub const LCD_128X64_BRICKLET_STATUS_LED_CONFIG_SHOW_STATUS: u8 = 3;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct WritePixelsLowLevel {}
impl FromByteSlice for WritePixelsLowLevel {
fn bytes_expected() -> usize {
0
}
fn from_le_byte_slice(_bytes: &[u8]) -> WritePixelsLowLevel {
WritePixelsLowLevel {}
}
}
#[derive(Clone, Copy)]
pub struct ReadPixelsLowLevel {
pub pixels_length: u16,
pub pixels_chunk_offset: u16,
pub pixels_chunk_data: [bool; 480],
}
impl FromByteSlice for ReadPixelsLowLevel {
fn bytes_expected() -> usize {
64
}
fn from_le_byte_slice(bytes: &[u8]) -> ReadPixelsLowLevel {
ReadPixelsLowLevel {
pixels_length: <u16>::from_le_byte_slice(&bytes[0..2]),
pixels_chunk_offset: <u16>::from_le_byte_slice(&bytes[2..4]),
pixels_chunk_data: <[bool; 480]>::from_le_byte_slice(&bytes[4..64]),
}
}
}
impl LowLevelRead<bool, ReadPixelsResult> for ReadPixelsLowLevel {
fn ll_message_length(&self) -> usize {
self.pixels_length as usize
}
fn ll_message_chunk_offset(&self) -> usize {
self.pixels_chunk_offset as usize
}
fn ll_message_chunk_data(&self) -> &[bool] {
&self.pixels_chunk_data
}
fn get_result(&self) -> ReadPixelsResult {
ReadPixelsResult {}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct DisplayConfiguration {
pub contrast: u8,
pub backlight: u8,
pub invert: bool,
pub automatic_draw: bool,
}
impl FromByteSlice for DisplayConfiguration {
fn bytes_expected() -> usize {
4
}
fn from_le_byte_slice(bytes: &[u8]) -> DisplayConfiguration {
DisplayConfiguration {
contrast: <u8>::from_le_byte_slice(&bytes[0..1]),
backlight: <u8>::from_le_byte_slice(&bytes[1..2]),
invert: <bool>::from_le_byte_slice(&bytes[2..3]),
automatic_draw: <bool>::from_le_byte_slice(&bytes[3..4]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchPosition {
pub pressure: u16,
pub x: u16,
pub y: u16,
pub age: u32,
}
impl FromByteSlice for TouchPosition {
fn bytes_expected() -> usize {
10
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchPosition {
TouchPosition {
pressure: <u16>::from_le_byte_slice(&bytes[0..2]),
x: <u16>::from_le_byte_slice(&bytes[2..4]),
y: <u16>::from_le_byte_slice(&bytes[4..6]),
age: <u32>::from_le_byte_slice(&bytes[6..10]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchPositionCallbackConfiguration {
pub period: u32,
pub value_has_to_change: bool,
}
impl FromByteSlice for TouchPositionCallbackConfiguration {
fn bytes_expected() -> usize {
5
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchPositionCallbackConfiguration {
TouchPositionCallbackConfiguration {
period: <u32>::from_le_byte_slice(&bytes[0..4]),
value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchPositionEvent {
pub pressure: u16,
pub x: u16,
pub y: u16,
pub age: u32,
}
impl FromByteSlice for TouchPositionEvent {
fn bytes_expected() -> usize {
10
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchPositionEvent {
TouchPositionEvent {
pressure: <u16>::from_le_byte_slice(&bytes[0..2]),
x: <u16>::from_le_byte_slice(&bytes[2..4]),
y: <u16>::from_le_byte_slice(&bytes[4..6]),
age: <u32>::from_le_byte_slice(&bytes[6..10]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchGesture {
pub gesture: u8,
pub duration: u32,
pub pressure_max: u16,
pub x_start: u16,
pub y_start: u16,
pub x_end: u16,
pub y_end: u16,
pub age: u32,
}
impl FromByteSlice for TouchGesture {
fn bytes_expected() -> usize {
19
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchGesture {
TouchGesture {
gesture: <u8>::from_le_byte_slice(&bytes[0..1]),
duration: <u32>::from_le_byte_slice(&bytes[1..5]),
pressure_max: <u16>::from_le_byte_slice(&bytes[5..7]),
x_start: <u16>::from_le_byte_slice(&bytes[7..9]),
y_start: <u16>::from_le_byte_slice(&bytes[9..11]),
x_end: <u16>::from_le_byte_slice(&bytes[11..13]),
y_end: <u16>::from_le_byte_slice(&bytes[13..15]),
age: <u32>::from_le_byte_slice(&bytes[15..19]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchGestureCallbackConfiguration {
pub period: u32,
pub value_has_to_change: bool,
}
impl FromByteSlice for TouchGestureCallbackConfiguration {
fn bytes_expected() -> usize {
5
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchGestureCallbackConfiguration {
TouchGestureCallbackConfiguration {
period: <u32>::from_le_byte_slice(&bytes[0..4]),
value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct TouchGestureEvent {
pub gesture: u8,
pub duration: u32,
pub pressure_max: u16,
pub x_start: u16,
pub y_start: u16,
pub x_end: u16,
pub y_end: u16,
pub age: u32,
}
impl FromByteSlice for TouchGestureEvent {
fn bytes_expected() -> usize {
19
}
fn from_le_byte_slice(bytes: &[u8]) -> TouchGestureEvent {
TouchGestureEvent {
gesture: <u8>::from_le_byte_slice(&bytes[0..1]),
duration: <u32>::from_le_byte_slice(&bytes[1..5]),
pressure_max: <u16>::from_le_byte_slice(&bytes[5..7]),
x_start: <u16>::from_le_byte_slice(&bytes[7..9]),
y_start: <u16>::from_le_byte_slice(&bytes[9..11]),
x_end: <u16>::from_le_byte_slice(&bytes[11..13]),
y_end: <u16>::from_le_byte_slice(&bytes[13..15]),
age: <u32>::from_le_byte_slice(&bytes[15..19]),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiButton {
pub active: bool,
pub position_x: u8,
pub position_y: u8,
pub width: u8,
pub height: u8,
pub text: String,
}
impl FromByteSlice for GuiButton {
fn bytes_expected() -> usize {
21
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiButton {
GuiButton {
active: <bool>::from_le_byte_slice(&bytes[0..1]),
position_x: <u8>::from_le_byte_slice(&bytes[1..2]),
position_y: <u8>::from_le_byte_slice(&bytes[2..3]),
width: <u8>::from_le_byte_slice(&bytes[3..4]),
height: <u8>::from_le_byte_slice(&bytes[4..5]),
text: <String>::from_le_byte_slice(&bytes[5..21]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiButtonPressedCallbackConfiguration {
pub period: u32,
pub value_has_to_change: bool,
}
impl FromByteSlice for GuiButtonPressedCallbackConfiguration {
fn bytes_expected() -> usize {
5
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiButtonPressedCallbackConfiguration {
GuiButtonPressedCallbackConfiguration {
period: <u32>::from_le_byte_slice(&bytes[0..4]),
value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiButtonPressedEvent {
pub index: u8,
pub pressed: bool,
}
impl FromByteSlice for GuiButtonPressedEvent {
fn bytes_expected() -> usize {
2
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiButtonPressedEvent {
GuiButtonPressedEvent { index: <u8>::from_le_byte_slice(&bytes[0..1]), pressed: <bool>::from_le_byte_slice(&bytes[1..2]) }
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiSlider {
pub active: bool,
pub position_x: u8,
pub position_y: u8,
pub length: u8,
pub direction: u8,
pub value: u8,
}
impl FromByteSlice for GuiSlider {
fn bytes_expected() -> usize {
6
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiSlider {
GuiSlider {
active: <bool>::from_le_byte_slice(&bytes[0..1]),
position_x: <u8>::from_le_byte_slice(&bytes[1..2]),
position_y: <u8>::from_le_byte_slice(&bytes[2..3]),
length: <u8>::from_le_byte_slice(&bytes[3..4]),
direction: <u8>::from_le_byte_slice(&bytes[4..5]),
value: <u8>::from_le_byte_slice(&bytes[5..6]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiSliderValueCallbackConfiguration {
pub period: u32,
pub value_has_to_change: bool,
}
impl FromByteSlice for GuiSliderValueCallbackConfiguration {
fn bytes_expected() -> usize {
5
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiSliderValueCallbackConfiguration {
GuiSliderValueCallbackConfiguration {
period: <u32>::from_le_byte_slice(&bytes[0..4]),
value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiSliderValueEvent {
pub index: u8,
pub value: u8,
}
impl FromByteSlice for GuiSliderValueEvent {
fn bytes_expected() -> usize {
2
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiSliderValueEvent {
GuiSliderValueEvent { index: <u8>::from_le_byte_slice(&bytes[0..1]), value: <u8>::from_le_byte_slice(&bytes[1..2]) }
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiTabConfiguration {
pub change_tab_config: u8,
pub clear_gui: bool,
}
impl FromByteSlice for GuiTabConfiguration {
fn bytes_expected() -> usize {
2
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiTabConfiguration {
GuiTabConfiguration {
change_tab_config: <u8>::from_le_byte_slice(&bytes[0..1]),
clear_gui: <bool>::from_le_byte_slice(&bytes[1..2]),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiTabText {
pub active: bool,
pub text: String,
}
impl FromByteSlice for GuiTabText {
fn bytes_expected() -> usize {
6
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiTabText {
GuiTabText { active: <bool>::from_le_byte_slice(&bytes[0..1]), text: <String>::from_le_byte_slice(&bytes[1..6]) }
}
}
#[derive(Clone, Copy)]
pub struct GuiTabIcon {
pub active: bool,
pub icon: [bool; 168],
}
impl FromByteSlice for GuiTabIcon {
fn bytes_expected() -> usize {
22
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiTabIcon {
GuiTabIcon { active: <bool>::from_le_byte_slice(&bytes[0..1]), icon: <[bool; 168]>::from_le_byte_slice(&bytes[1..22]) }
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiTabSelectedCallbackConfiguration {
pub period: u32,
pub value_has_to_change: bool,
}
impl FromByteSlice for GuiTabSelectedCallbackConfiguration {
fn bytes_expected() -> usize {
5
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiTabSelectedCallbackConfiguration {
GuiTabSelectedCallbackConfiguration {
period: <u32>::from_le_byte_slice(&bytes[0..4]),
value_has_to_change: <bool>::from_le_byte_slice(&bytes[4..5]),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiGraphConfiguration {
pub active: bool,
pub graph_type: u8,
pub position_x: u8,
pub position_y: u8,
pub width: u8,
pub height: u8,
pub text_x: String,
pub text_y: String,
}
impl FromByteSlice for GuiGraphConfiguration {
fn bytes_expected() -> usize {
14
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiGraphConfiguration {
GuiGraphConfiguration {
active: <bool>::from_le_byte_slice(&bytes[0..1]),
graph_type: <u8>::from_le_byte_slice(&bytes[1..2]),
position_x: <u8>::from_le_byte_slice(&bytes[2..3]),
position_y: <u8>::from_le_byte_slice(&bytes[3..4]),
width: <u8>::from_le_byte_slice(&bytes[4..5]),
height: <u8>::from_le_byte_slice(&bytes[5..6]),
text_x: <String>::from_le_byte_slice(&bytes[6..10]),
text_y: <String>::from_le_byte_slice(&bytes[10..14]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct SetGuiGraphDataLowLevel {}
impl FromByteSlice for SetGuiGraphDataLowLevel {
fn bytes_expected() -> usize {
0
}
fn from_le_byte_slice(_bytes: &[u8]) -> SetGuiGraphDataLowLevel {
SetGuiGraphDataLowLevel {}
}
}
#[derive(Clone, Copy)]
pub struct GuiGraphDataLowLevel {
pub data_length: u16,
pub data_chunk_offset: u16,
pub data_chunk_data: [u8; 59],
}
impl FromByteSlice for GuiGraphDataLowLevel {
fn bytes_expected() -> usize {
63
}
fn from_le_byte_slice(bytes: &[u8]) -> GuiGraphDataLowLevel {
GuiGraphDataLowLevel {
data_length: <u16>::from_le_byte_slice(&bytes[0..2]),
data_chunk_offset: <u16>::from_le_byte_slice(&bytes[2..4]),
data_chunk_data: <[u8; 59]>::from_le_byte_slice(&bytes[4..63]),
}
}
}
impl LowLevelRead<u8, GuiGraphDataResult> for GuiGraphDataLowLevel {
fn ll_message_length(&self) -> usize {
self.data_length as usize
}
fn ll_message_chunk_offset(&self) -> usize {
self.data_chunk_offset as usize
}
fn ll_message_chunk_data(&self) -> &[u8] {
&self.data_chunk_data
}
fn get_result(&self) -> GuiGraphDataResult {
GuiGraphDataResult {}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct SpitfpErrorCount {
pub error_count_ack_checksum: u32,
pub error_count_message_checksum: u32,
pub error_count_frame: u32,
pub error_count_overflow: u32,
}
impl FromByteSlice for SpitfpErrorCount {
fn bytes_expected() -> usize {
16
}
fn from_le_byte_slice(bytes: &[u8]) -> SpitfpErrorCount {
SpitfpErrorCount {
error_count_ack_checksum: <u32>::from_le_byte_slice(&bytes[0..4]),
error_count_message_checksum: <u32>::from_le_byte_slice(&bytes[4..8]),
error_count_frame: <u32>::from_le_byte_slice(&bytes[8..12]),
error_count_overflow: <u32>::from_le_byte_slice(&bytes[12..16]),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
pub struct Identity {
pub uid: String,
pub connected_uid: String,
pub position: char,
pub hardware_version: [u8; 3],
pub firmware_version: [u8; 3],
pub device_identifier: u16,
}
impl FromByteSlice for Identity {
fn bytes_expected() -> usize {
25
}
fn from_le_byte_slice(bytes: &[u8]) -> Identity {
Identity {
uid: <String>::from_le_byte_slice(&bytes[0..8]),
connected_uid: <String>::from_le_byte_slice(&bytes[8..16]),
position: <char>::from_le_byte_slice(&bytes[16..17]),
hardware_version: <[u8; 3]>::from_le_byte_slice(&bytes[17..20]),
firmware_version: <[u8; 3]>::from_le_byte_slice(&bytes[20..23]),
device_identifier: <u16>::from_le_byte_slice(&bytes[23..25]),
}
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct WritePixelsResult {}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct ReadPixelsResult {}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct SetGuiGraphDataResult {}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
pub struct GuiGraphDataResult {}
#[derive(Clone)]
pub struct Lcd128x64Bricklet {
device: Device,
}
impl Lcd128x64Bricklet {
pub const DEVICE_IDENTIFIER: u16 = 298;
pub const DEVICE_DISPLAY_NAME: &'static str = "LCD 128x64 Bricklet";
pub fn new(uid: &str, connection: AsyncIpConnection) -> Lcd128x64Bricklet {
let mut result = Lcd128x64Bricklet { device: Device::new([2, 0, 10], uid, connection, Self::DEVICE_DISPLAY_NAME) };
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::WritePixelsLowLevel) as usize] = ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::ReadPixelsLowLevel) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::ClearDisplay) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetDisplayConfiguration) as usize] =
ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetDisplayConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::WriteLine) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::DrawBufferedFrame) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetTouchPosition) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetTouchPositionCallbackConfiguration) as usize] =
ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetTouchPositionCallbackConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetTouchGesture) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetTouchGestureCallbackConfiguration) as usize] =
ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetTouchGestureCallbackConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::DrawLine) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::DrawBox) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::DrawText) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiButton) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiButton) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::RemoveGuiButton) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiButtonPressedCallbackConfiguration) as usize] =
ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiButtonPressedCallbackConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiButtonPressed) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiSlider) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiSlider) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::RemoveGuiSlider) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiSliderValueCallbackConfiguration) as usize] =
ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiSliderValueCallbackConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiSliderValue) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiTabConfiguration) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiTabConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiTabText) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiTabText) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiTabIcon) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiTabIcon) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::RemoveGuiTab) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiTabSelected) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiTabSelectedCallbackConfiguration) as usize] =
ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiTabSelectedCallbackConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiTabSelected) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiGraphConfiguration) as usize] =
ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiGraphConfiguration) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetGuiGraphDataLowLevel) as usize] = ResponseExpectedFlag::True;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetGuiGraphDataLowLevel) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::RemoveGuiGraph) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::RemoveAllGui) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetTouchLedConfig) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetTouchLedConfig) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetSpitfpErrorCount) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetBootloaderMode) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetBootloaderMode) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetWriteFirmwarePointer) as usize] =
ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::WriteFirmware) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::SetStatusLedConfig) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetStatusLedConfig) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetChipTemperature) as usize] =
ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::Reset) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::WriteUid) as usize] = ResponseExpectedFlag::False;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::ReadUid) as usize] = ResponseExpectedFlag::AlwaysTrue;
result.device.response_expected[u8::from(Lcd128x64BrickletFunction::GetIdentity) as usize] = ResponseExpectedFlag::AlwaysTrue;
result
}
pub fn get_response_expected(&mut self, fun: Lcd128x64BrickletFunction) -> Result<bool, GetResponseExpectedError> {
self.device.get_response_expected(u8::from(fun))
}
pub fn set_response_expected(
&mut self,
fun: Lcd128x64BrickletFunction,
response_expected: bool,
) -> Result<(), SetResponseExpectedError> {
self.device.set_response_expected(u8::from(fun), response_expected)
}
pub fn set_response_expected_all(&mut self, response_expected: bool) {
self.device.set_response_expected_all(response_expected)
}
pub fn get_api_version(&self) -> [u8; 3] {
self.device.api_version
}
pub async fn get_touch_position_callback_receiver(&mut self) -> impl Stream<Item = TouchPositionEvent> {
self.device
.get_callback_receiver(u8::from(Lcd128x64BrickletFunction::CallbackTouchPosition))
.await
.map(|p| TouchPositionEvent::from_le_byte_slice(p.body()))
}
pub async fn get_touch_gesture_callback_receiver(&mut self) -> impl Stream<Item = TouchGestureEvent> {
self.device
.get_callback_receiver(u8::from(Lcd128x64BrickletFunction::CallbackTouchGesture))
.await
.map(|p| TouchGestureEvent::from_le_byte_slice(p.body()))
}
pub async fn get_gui_button_pressed_callback_receiver(&mut self) -> impl Stream<Item = GuiButtonPressedEvent> {
self.device
.get_callback_receiver(u8::from(Lcd128x64BrickletFunction::CallbackGuiButtonPressed))
.await
.map(|p| GuiButtonPressedEvent::from_le_byte_slice(p.body()))
}
pub async fn get_gui_slider_value_callback_receiver(&mut self) -> impl Stream<Item = GuiSliderValueEvent> {
self.device
.get_callback_receiver(u8::from(Lcd128x64BrickletFunction::CallbackGuiSliderValue))
.await
.map(|p| GuiSliderValueEvent::from_le_byte_slice(p.body()))
}
pub async fn get_gui_tab_selected_callback_receiver(&mut self) -> impl Stream<Item = i8> {
self.device
.get_callback_receiver(u8::from(Lcd128x64BrickletFunction::CallbackGuiTabSelected))
.await
.map(|p| i8::from_le_byte_slice(p.body()))
}
pub async fn write_pixels_low_level(
&mut self,
x_start: u8,
y_start: u8,
x_end: u8,
y_end: u8,
pixels_length: u16,
pixels_chunk_offset: u16,
pixels_chunk_data: &[bool; 448],
) -> Result<WritePixelsLowLevel, TinkerforgeError> {
let mut payload = [0; 64];
x_start.write_to_slice(&mut payload[0..1]);
y_start.write_to_slice(&mut payload[1..2]);
x_end.write_to_slice(&mut payload[2..3]);
y_end.write_to_slice(&mut payload[3..4]);
pixels_length.write_to_slice(&mut payload[4..6]);
pixels_chunk_offset.write_to_slice(&mut payload[6..8]);
pixels_chunk_data.write_to_slice(&mut payload[8..64]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::WritePixelsLowLevel), &payload).await?.unwrap();
Ok(WritePixelsLowLevel::from_le_byte_slice(result.body()))
}
pub async fn read_pixels_low_level(
&mut self,
x_start: u8,
y_start: u8,
x_end: u8,
y_end: u8,
) -> Result<ReadPixelsLowLevel, TinkerforgeError> {
let mut payload = [0; 4];
x_start.write_to_slice(&mut payload[0..1]);
y_start.write_to_slice(&mut payload[1..2]);
x_end.write_to_slice(&mut payload[2..3]);
y_end.write_to_slice(&mut payload[3..4]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::ReadPixelsLowLevel), &payload).await?;
Ok(ReadPixelsLowLevel::from_le_byte_slice(result.body()))
}
pub async fn clear_display(&mut self) -> Result<(), TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::ClearDisplay), &payload).await?;
Ok(())
}
pub async fn set_display_configuration(
&mut self,
contrast: u8,
backlight: u8,
invert: bool,
automatic_draw: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 4];
contrast.write_to_slice(&mut payload[0..1]);
backlight.write_to_slice(&mut payload[1..2]);
invert.write_to_slice(&mut payload[2..3]);
automatic_draw.write_to_slice(&mut payload[3..4]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetDisplayConfiguration), &payload).await?;
Ok(())
}
pub async fn get_display_configuration(&mut self) -> Result<DisplayConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetDisplayConfiguration), &payload).await?;
Ok(DisplayConfiguration::from_le_byte_slice(result.body()))
}
pub async fn write_line(&mut self, line: u8, position: u8, text: String) -> Result<(), TinkerforgeError> {
let mut payload = [0; 24];
line.write_to_slice(&mut payload[0..1]);
position.write_to_slice(&mut payload[1..2]);
text.try_write_to_slice(22, &mut payload)?;
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::WriteLine), &payload).await?;
Ok(())
}
pub async fn draw_buffered_frame(&mut self, force_complete_redraw: bool) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
force_complete_redraw.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::DrawBufferedFrame), &payload).await?;
Ok(())
}
pub async fn get_touch_position(&mut self) -> Result<TouchPosition, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetTouchPosition), &payload).await?;
Ok(TouchPosition::from_le_byte_slice(result.body()))
}
pub async fn set_touch_position_callback_configuration(
&mut self,
period: u32,
value_has_to_change: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
period.write_to_slice(&mut payload[0..4]);
value_has_to_change.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetTouchPositionCallbackConfiguration), &payload).await?;
Ok(())
}
pub async fn get_touch_position_callback_configuration(&mut self) -> Result<TouchPositionCallbackConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetTouchPositionCallbackConfiguration), &payload).await?;
Ok(TouchPositionCallbackConfiguration::from_le_byte_slice(result.body()))
}
pub async fn get_touch_gesture(&mut self) -> Result<TouchGesture, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetTouchGesture), &payload).await?;
Ok(TouchGesture::from_le_byte_slice(result.body()))
}
pub async fn set_touch_gesture_callback_configuration(
&mut self,
period: u32,
value_has_to_change: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
period.write_to_slice(&mut payload[0..4]);
value_has_to_change.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetTouchGestureCallbackConfiguration), &payload).await?;
Ok(())
}
pub async fn get_touch_gesture_callback_configuration(&mut self) -> Result<TouchGestureCallbackConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetTouchGestureCallbackConfiguration), &payload).await?;
Ok(TouchGestureCallbackConfiguration::from_le_byte_slice(result.body()))
}
pub async fn draw_line(
&mut self,
position_x_start: u8,
position_y_start: u8,
position_x_end: u8,
position_y_end: u8,
color: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
position_x_start.write_to_slice(&mut payload[0..1]);
position_y_start.write_to_slice(&mut payload[1..2]);
position_x_end.write_to_slice(&mut payload[2..3]);
position_y_end.write_to_slice(&mut payload[3..4]);
color.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::DrawLine), &payload).await?;
Ok(())
}
pub async fn draw_box(
&mut self,
position_x_start: u8,
position_y_start: u8,
position_x_end: u8,
position_y_end: u8,
fill: bool,
color: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 6];
position_x_start.write_to_slice(&mut payload[0..1]);
position_y_start.write_to_slice(&mut payload[1..2]);
position_x_end.write_to_slice(&mut payload[2..3]);
position_y_end.write_to_slice(&mut payload[3..4]);
fill.write_to_slice(&mut payload[4..5]);
color.write_to_slice(&mut payload[5..6]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::DrawBox), &payload).await?;
Ok(())
}
pub async fn draw_text(&mut self, position_x: u8, position_y: u8, font: u8, color: bool, text: String) -> Result<(), TinkerforgeError> {
let mut payload = [0; 26];
position_x.write_to_slice(&mut payload[0..1]);
position_y.write_to_slice(&mut payload[1..2]);
font.write_to_slice(&mut payload[2..3]);
color.write_to_slice(&mut payload[3..4]);
text.try_write_to_slice(22, &mut payload)?;
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::DrawText), &payload).await?;
Ok(())
}
pub async fn set_gui_button(
&mut self,
index: u8,
position_x: u8,
position_y: u8,
width: u8,
height: u8,
text: String,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 21];
index.write_to_slice(&mut payload[0..1]);
position_x.write_to_slice(&mut payload[1..2]);
position_y.write_to_slice(&mut payload[2..3]);
width.write_to_slice(&mut payload[3..4]);
height.write_to_slice(&mut payload[4..5]);
text.try_write_to_slice(16, &mut payload)?;
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiButton), &payload).await?;
Ok(())
}
pub async fn get_gui_button(&mut self, index: u8) -> Result<GuiButton, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiButton), &payload).await?;
Ok(GuiButton::from_le_byte_slice(result.body()))
}
pub async fn remove_gui_button(&mut self, index: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::RemoveGuiButton), &payload).await?;
Ok(())
}
pub async fn set_gui_button_pressed_callback_configuration(
&mut self,
period: u32,
value_has_to_change: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
period.write_to_slice(&mut payload[0..4]);
value_has_to_change.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiButtonPressedCallbackConfiguration), &payload).await?;
Ok(())
}
pub async fn get_gui_button_pressed_callback_configuration(
&mut self,
) -> Result<GuiButtonPressedCallbackConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiButtonPressedCallbackConfiguration), &payload).await?;
Ok(GuiButtonPressedCallbackConfiguration::from_le_byte_slice(result.body()))
}
pub async fn get_gui_button_pressed(&mut self, index: u8) -> Result<bool, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiButtonPressed), &payload).await?;
Ok(bool::from_le_byte_slice(result.body()))
}
pub async fn set_gui_slider(
&mut self,
index: u8,
position_x: u8,
position_y: u8,
length: u8,
direction: u8,
value: u8,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 6];
index.write_to_slice(&mut payload[0..1]);
position_x.write_to_slice(&mut payload[1..2]);
position_y.write_to_slice(&mut payload[2..3]);
length.write_to_slice(&mut payload[3..4]);
direction.write_to_slice(&mut payload[4..5]);
value.write_to_slice(&mut payload[5..6]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiSlider), &payload).await?;
Ok(())
}
pub async fn get_gui_slider(&mut self, index: u8) -> Result<GuiSlider, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiSlider), &payload).await?;
Ok(GuiSlider::from_le_byte_slice(result.body()))
}
pub async fn remove_gui_slider(&mut self, index: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::RemoveGuiSlider), &payload).await?;
Ok(())
}
pub async fn set_gui_slider_value_callback_configuration(
&mut self,
period: u32,
value_has_to_change: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
period.write_to_slice(&mut payload[0..4]);
value_has_to_change.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiSliderValueCallbackConfiguration), &payload).await?;
Ok(())
}
pub async fn get_gui_slider_value_callback_configuration(&mut self) -> Result<GuiSliderValueCallbackConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiSliderValueCallbackConfiguration), &payload).await?;
Ok(GuiSliderValueCallbackConfiguration::from_le_byte_slice(result.body()))
}
pub async fn get_gui_slider_value(&mut self, index: u8) -> Result<u8, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiSliderValue), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn set_gui_tab_configuration(&mut self, change_tab_config: u8, clear_gui: bool) -> Result<(), TinkerforgeError> {
let mut payload = [0; 2];
change_tab_config.write_to_slice(&mut payload[0..1]);
clear_gui.write_to_slice(&mut payload[1..2]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiTabConfiguration), &payload).await?;
Ok(())
}
pub async fn get_gui_tab_configuration(&mut self) -> Result<GuiTabConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiTabConfiguration), &payload).await?;
Ok(GuiTabConfiguration::from_le_byte_slice(result.body()))
}
pub async fn set_gui_tab_text(&mut self, index: u8, text: String) -> Result<(), TinkerforgeError> {
let mut payload = [0; 6];
index.write_to_slice(&mut payload[0..1]);
text.try_write_to_slice(5, &mut payload)?;
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiTabText), &payload).await?;
Ok(())
}
pub async fn get_gui_tab_text(&mut self, index: u8) -> Result<GuiTabText, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiTabText), &payload).await?;
Ok(GuiTabText::from_le_byte_slice(result.body()))
}
pub async fn set_gui_tab_icon(&mut self, index: u8, icon: &[bool; 168]) -> Result<(), TinkerforgeError> {
let mut payload = [0; 22];
index.write_to_slice(&mut payload[0..1]);
icon.write_to_slice(&mut payload[1..22]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiTabIcon), &payload).await?;
Ok(())
}
pub async fn get_gui_tab_icon(&mut self, index: u8) -> Result<GuiTabIcon, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiTabIcon), &payload).await?;
Ok(GuiTabIcon::from_le_byte_slice(result.body()))
}
pub async fn remove_gui_tab(&mut self, index: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::RemoveGuiTab), &payload).await?;
Ok(())
}
pub async fn set_gui_tab_selected(&mut self, index: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiTabSelected), &payload).await?;
Ok(())
}
pub async fn set_gui_tab_selected_callback_configuration(
&mut self,
period: u32,
value_has_to_change: bool,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 5];
period.write_to_slice(&mut payload[0..4]);
value_has_to_change.write_to_slice(&mut payload[4..5]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiTabSelectedCallbackConfiguration), &payload).await?;
Ok(())
}
pub async fn get_gui_tab_selected_callback_configuration(&mut self) -> Result<GuiTabSelectedCallbackConfiguration, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiTabSelectedCallbackConfiguration), &payload).await?;
Ok(GuiTabSelectedCallbackConfiguration::from_le_byte_slice(result.body()))
}
pub async fn get_gui_tab_selected(&mut self) -> Result<i8, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiTabSelected), &payload).await?;
Ok(i8::from_le_byte_slice(result.body()))
}
pub async fn set_gui_graph_configuration(
&mut self,
index: u8,
graph_type: u8,
position_x: u8,
position_y: u8,
width: u8,
height: u8,
text_x: String,
text_y: String,
) -> Result<(), TinkerforgeError> {
let mut payload = [0; 14];
index.write_to_slice(&mut payload[0..1]);
graph_type.write_to_slice(&mut payload[1..2]);
position_x.write_to_slice(&mut payload[2..3]);
position_y.write_to_slice(&mut payload[3..4]);
width.write_to_slice(&mut payload[4..5]);
height.write_to_slice(&mut payload[5..6]);
text_x.try_write_to_slice(4, &mut payload)?;
text_y.try_write_to_slice(4, &mut payload)?;
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiGraphConfiguration), &payload).await?;
Ok(())
}
pub async fn get_gui_graph_configuration(&mut self, index: u8) -> Result<GuiGraphConfiguration, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiGraphConfiguration), &payload).await?;
Ok(GuiGraphConfiguration::from_le_byte_slice(result.body()))
}
pub async fn set_gui_graph_data_low_level(
&mut self,
index: u8,
data_length: u16,
data_chunk_offset: u16,
data_chunk_data: &[u8; 59],
) -> Result<SetGuiGraphDataLowLevel, TinkerforgeError> {
let mut payload = [0; 64];
index.write_to_slice(&mut payload[0..1]);
data_length.write_to_slice(&mut payload[1..3]);
data_chunk_offset.write_to_slice(&mut payload[3..5]);
data_chunk_data.write_to_slice(&mut payload[5..64]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetGuiGraphDataLowLevel), &payload).await?.unwrap();
Ok(SetGuiGraphDataLowLevel::from_le_byte_slice(result.body()))
}
pub async fn get_gui_graph_data_low_level(&mut self, index: u8) -> Result<GuiGraphDataLowLevel, TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetGuiGraphDataLowLevel), &payload).await?;
Ok(GuiGraphDataLowLevel::from_le_byte_slice(result.body()))
}
pub async fn remove_gui_graph(&mut self, index: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
index.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::RemoveGuiGraph), &payload).await?;
Ok(())
}
pub async fn remove_all_gui(&mut self) -> Result<(), TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::RemoveAllGui), &payload).await?;
Ok(())
}
pub async fn set_touch_led_config(&mut self, config: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
config.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetTouchLedConfig), &payload).await?;
Ok(())
}
pub async fn get_touch_led_config(&mut self) -> Result<u8, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetTouchLedConfig), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn get_spitfp_error_count(&mut self) -> Result<SpitfpErrorCount, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetSpitfpErrorCount), &payload).await?;
Ok(SpitfpErrorCount::from_le_byte_slice(result.body()))
}
pub async fn set_bootloader_mode(&mut self, mode: u8) -> Result<u8, TinkerforgeError> {
let mut payload = [0; 1];
mode.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::SetBootloaderMode), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn get_bootloader_mode(&mut self) -> Result<u8, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetBootloaderMode), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn set_write_firmware_pointer(&mut self, pointer: u32) -> Result<(), TinkerforgeError> {
let mut payload = [0; 4];
pointer.write_to_slice(&mut payload[0..4]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetWriteFirmwarePointer), &payload).await?;
Ok(())
}
pub async fn write_firmware(&mut self, data: &[u8; 64]) -> Result<u8, TinkerforgeError> {
let mut payload = [0; 64];
data.write_to_slice(&mut payload[0..64]);
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::WriteFirmware), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn set_status_led_config(&mut self, config: u8) -> Result<(), TinkerforgeError> {
let mut payload = [0; 1];
config.write_to_slice(&mut payload[0..1]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::SetStatusLedConfig), &payload).await?;
Ok(())
}
pub async fn get_status_led_config(&mut self) -> Result<u8, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetStatusLedConfig), &payload).await?;
Ok(u8::from_le_byte_slice(result.body()))
}
pub async fn get_chip_temperature(&mut self) -> Result<i16, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetChipTemperature), &payload).await?;
Ok(i16::from_le_byte_slice(result.body()))
}
pub async fn reset(&mut self) -> Result<(), TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::Reset), &payload).await?;
Ok(())
}
pub async fn write_uid(&mut self, uid: u32) -> Result<(), TinkerforgeError> {
let mut payload = [0; 4];
uid.write_to_slice(&mut payload[0..4]);
#[allow(unused_variables)]
let result = self.device.set(u8::from(Lcd128x64BrickletFunction::WriteUid), &payload).await?;
Ok(())
}
pub async fn read_uid(&mut self) -> Result<u32, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::ReadUid), &payload).await?;
Ok(u32::from_le_byte_slice(result.body()))
}
pub async fn get_identity(&mut self) -> Result<Identity, TinkerforgeError> {
let payload = [0; 0];
#[allow(unused_variables)]
let result = self.device.get(u8::from(Lcd128x64BrickletFunction::GetIdentity), &payload).await?;
Ok(Identity::from_le_byte_slice(result.body()))
}
}