MC Protocol Serial C++ 0.2.3
MC protocol serial library for MCU-oriented environments
Loading...
Searching...
No Matches
client.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstddef>
5#include <cstdint>
6
11
22
24
38 public:
39 MelsecSerialClient() = default;
40
42 [[nodiscard]] Status configure(const ProtocolConfig& config) noexcept;
44 void set_rs485_hooks(const Rs485Hooks& hooks) noexcept;
45
47 [[nodiscard]] bool busy() const noexcept;
49 [[nodiscard]] std::span<const std::byte> pending_tx_frame() const noexcept;
50
53 std::uint32_t now_ms,
54 Status transport_status = ok_status()) noexcept;
55
57 void on_rx_bytes(std::uint32_t now_ms, std::span<const std::byte> bytes) noexcept;
59 void poll(std::uint32_t now_ms) noexcept;
61 void cancel() noexcept;
62
65 std::uint32_t now_ms,
66 const BatchReadWordsRequest& request,
67 std::span<std::uint16_t> out_words,
68 CompletionHandler callback,
69 void* user) noexcept;
70
73 std::uint32_t now_ms,
75 std::span<std::uint16_t> out_words,
76 CompletionHandler callback,
77 void* user) noexcept;
78
81 std::uint32_t now_ms,
83 std::span<std::uint16_t> out_words,
84 CompletionHandler callback,
85 void* user) noexcept;
86
89 std::uint32_t now_ms,
90 const LinkDirectDevice& device,
91 std::uint16_t points,
92 std::span<std::uint16_t> out_words,
93 CompletionHandler callback,
94 void* user) noexcept;
95
98 std::uint32_t now_ms,
99 const BatchReadBitsRequest& request,
100 std::span<BitValue> out_bits,
101 CompletionHandler callback,
102 void* user) noexcept;
103
106 std::uint32_t now_ms,
107 const LinkDirectDevice& device,
108 std::uint16_t points,
109 std::span<BitValue> out_bits,
110 CompletionHandler callback,
111 void* user) noexcept;
112
115 std::uint32_t now_ms,
116 const BatchWriteWordsRequest& request,
117 CompletionHandler callback,
118 void* user) noexcept;
119
122 std::uint32_t now_ms,
124 CompletionHandler callback,
125 void* user) noexcept;
126
129 std::uint32_t now_ms,
131 CompletionHandler callback,
132 void* user) noexcept;
133
136 std::uint32_t now_ms,
137 const LinkDirectDevice& device,
138 std::span<const std::uint16_t> words,
139 CompletionHandler callback,
140 void* user) noexcept;
141
144 std::uint32_t now_ms,
145 const BatchWriteBitsRequest& request,
146 CompletionHandler callback,
147 void* user) noexcept;
148
151 std::uint32_t now_ms,
152 const LinkDirectDevice& device,
153 std::span<const BitValue> bits,
154 CompletionHandler callback,
155 void* user) noexcept;
156
159 std::uint32_t now_ms,
160 const QualifiedBufferWordDevice& device,
161 std::uint16_t points,
162 std::span<std::uint16_t> out_words,
163 CompletionHandler callback,
164 void* user) noexcept;
165
168 std::uint32_t now_ms,
169 const QualifiedBufferWordDevice& device,
170 std::span<const std::uint16_t> words,
171 CompletionHandler callback,
172 void* user) noexcept;
173
176 std::uint32_t now_ms,
177 const RandomReadRequest& request,
178 std::span<std::uint32_t> out_values,
179 CompletionHandler callback,
180 void* user) noexcept;
181
184 std::uint32_t now_ms,
185 std::span<const LinkDirectRandomReadItem> items,
186 std::span<std::uint32_t> out_values,
187 CompletionHandler callback,
188 void* user) noexcept;
189
192 std::uint32_t now_ms,
193 std::span<const RandomWriteWordItem> items,
194 CompletionHandler callback,
195 void* user) noexcept;
196
199 std::uint32_t now_ms,
201 CompletionHandler callback,
202 void* user) noexcept;
203
206 std::uint32_t now_ms,
207 std::span<const LinkDirectRandomWriteWordItem> items,
208 CompletionHandler callback,
209 void* user) noexcept;
210
213 std::uint32_t now_ms,
214 std::span<const RandomWriteBitItem> items,
215 CompletionHandler callback,
216 void* user) noexcept;
217
220 std::uint32_t now_ms,
221 std::span<const LinkDirectRandomWriteBitItem> items,
222 CompletionHandler callback,
223 void* user) noexcept;
224
227 std::uint32_t now_ms,
228 const MultiBlockReadRequest& request,
229 std::span<std::uint16_t> out_words,
230 std::span<BitValue> out_bits,
231 std::span<MultiBlockReadBlockResult> out_results,
232 CompletionHandler callback,
233 void* user) noexcept;
234
241 std::uint32_t now_ms,
242 const LinkDirectMultiBlockReadRequest& request,
243 std::span<std::uint16_t> out_words,
244 std::span<BitValue> out_bits,
245 std::span<MultiBlockReadBlockResult> out_results,
246 CompletionHandler callback,
247 void* user) noexcept;
248
251 std::uint32_t now_ms,
252 const MultiBlockWriteRequest& request,
253 CompletionHandler callback,
254 void* user) noexcept;
255
258 std::uint32_t now_ms,
260 CompletionHandler callback,
261 void* user) noexcept;
262
265 std::uint32_t now_ms,
266 const MonitorRegistration& request,
267 CompletionHandler callback,
268 void* user) noexcept;
269
272 std::uint32_t now_ms,
274 CompletionHandler callback,
275 void* user) noexcept;
276
279 std::uint32_t now_ms,
280 const LinkDirectMonitorRegistration& request,
281 CompletionHandler callback,
282 void* user) noexcept;
283
286 std::uint32_t now_ms,
287 std::span<std::uint32_t> out_values,
288 CompletionHandler callback,
289 void* user) noexcept;
290
293 std::uint32_t now_ms,
294 std::span<std::uint16_t> out_words,
295 CompletionHandler callback,
296 void* user) noexcept;
297
300 std::uint32_t now_ms,
301 const HostBufferReadRequest& request,
302 std::span<std::uint16_t> out_words,
303 CompletionHandler callback,
304 void* user) noexcept;
305
308 std::uint32_t now_ms,
309 const HostBufferWriteRequest& request,
310 CompletionHandler callback,
311 void* user) noexcept;
312
315 std::uint32_t now_ms,
316 const ModuleBufferReadRequest& request,
317 std::span<std::byte> out_bytes,
318 CompletionHandler callback,
319 void* user) noexcept;
320
323 std::uint32_t now_ms,
324 const ModuleBufferWriteRequest& request,
325 CompletionHandler callback,
326 void* user) noexcept;
327
330 std::uint32_t now_ms,
331 CpuModelInfo& out_info,
332 CompletionHandler callback,
333 void* user) noexcept;
334
337 std::uint32_t now_ms,
339 RemoteRunClearMode clear_mode,
340 CompletionHandler callback,
341 void* user) noexcept;
342
345 std::uint32_t now_ms,
346 CompletionHandler callback,
347 void* user) noexcept;
348
351 std::uint32_t now_ms,
353 CompletionHandler callback,
354 void* user) noexcept;
355
358 std::uint32_t now_ms,
359 CompletionHandler callback,
360 void* user) noexcept;
361
364 std::uint32_t now_ms,
365 std::string_view remote_password,
366 CompletionHandler callback,
367 void* user) noexcept;
368
371 std::uint32_t now_ms,
372 std::string_view remote_password,
373 CompletionHandler callback,
374 void* user) noexcept;
375
378 std::uint32_t now_ms,
379 CompletionHandler callback,
380 void* user) noexcept;
381
387 std::uint32_t now_ms,
388 CompletionHandler callback,
389 void* user) noexcept;
390
393 std::uint32_t now_ms,
394 const UserFrameReadRequest& request,
396 CompletionHandler callback,
397 void* user) noexcept;
398
401 std::uint32_t now_ms,
402 const UserFrameWriteRequest& request,
403 CompletionHandler callback,
404 void* user) noexcept;
405
408 std::uint32_t now_ms,
409 const UserFrameDeleteRequest& request,
410 CompletionHandler callback,
411 void* user) noexcept;
412
415 std::uint32_t now_ms,
416 const GlobalSignalControlRequest& request,
417 CompletionHandler callback,
418 void* user) noexcept;
419
422 std::uint32_t now_ms,
423 CompletionHandler callback,
424 void* user) noexcept;
425
428 std::uint32_t now_ms,
429 CompletionHandler callback,
430 void* user) noexcept;
431
433 [[nodiscard]] Status async_loopback(
434 std::uint32_t now_ms,
435 std::span<const char> hex_ascii,
436 std::span<char> out_echoed,
437 CompletionHandler callback,
438 void* user) noexcept;
439
440 private:
441 enum class OperationKind : std::uint8_t {
442 None,
443 BatchReadWords,
444 ReadExtendedFileRegisterWords,
445 DirectReadExtendedFileRegisterWords,
446 BatchReadBits,
447 BatchWriteWords,
448 WriteExtendedFileRegisterWords,
449 DirectWriteExtendedFileRegisterWords,
450 BatchWriteBits,
451 ExtendedBatchReadWords,
452 ExtendedBatchWriteWords,
453#if MCPROTOCOL_SERIAL_ENABLE_RANDOM_COMMANDS
454 RandomRead,
455 RandomWriteWords,
456 RandomWriteExtendedFileRegisterWords,
457 RandomWriteBits,
458#endif
459#if MCPROTOCOL_SERIAL_ENABLE_MULTI_BLOCK_COMMANDS
460 MultiBlockRead,
461 MultiBlockWrite,
462#endif
463#if MCPROTOCOL_SERIAL_ENABLE_MONITOR_COMMANDS
464 RegisterMonitor,
465 RegisterExtendedFileRegisterMonitor,
466 ReadMonitor,
467 ReadExtendedFileRegisterMonitor,
468#endif
469#if MCPROTOCOL_SERIAL_ENABLE_HOST_BUFFER_COMMANDS
470 ReadHostBuffer,
471 WriteHostBuffer,
472#endif
473#if MCPROTOCOL_SERIAL_ENABLE_MODULE_BUFFER_COMMANDS
474 ReadModuleBuffer,
475 WriteModuleBuffer,
476#endif
477#if MCPROTOCOL_SERIAL_ENABLE_CPU_MODEL_COMMANDS
478 ReadCpuModel,
479#endif
480 RemoteRun,
481 RemoteStop,
482 RemotePause,
483 RemoteLatchClear,
484 UnlockRemotePassword,
485 LockRemotePassword,
486 ClearErrorInformation,
487 RemoteReset,
488 ReadUserFrame,
489 WriteUserFrame,
490 DeleteUserFrame,
491 ControlGlobalSignal,
492 InitializeTransmissionSequence,
493 DeregisterCpuMonitoring,
494#if MCPROTOCOL_SERIAL_ENABLE_LOOPBACK_COMMANDS
495 Loopback
496#endif
497 };
498
499 [[nodiscard]] Status start_request(
500 std::uint32_t now_ms,
501 OperationKind operation,
502 std::size_t request_data_size,
503 CompletionHandler callback,
504 void* user) noexcept;
505
506 [[nodiscard]] std::uint8_t expected_e1_response_subheader() const noexcept;
507 [[nodiscard]] std::size_t expected_e1_success_response_data_size() const noexcept;
508 [[nodiscard]] Status handle_response(std::span<const std::uint8_t> response_data) noexcept;
509 void complete(Status status) noexcept;
510 void clear_pending_outputs() noexcept;
511 void clear_pending_copies() noexcept;
512
513 ProtocolConfig config_ {};
514 Rs485Hooks rs485_hooks_ {};
515 bool configured_ = false;
516 bool busy_ = false;
517 bool awaiting_write_complete_ = false;
518 OperationKind operation_ = OperationKind::None;
519 CompletionHandler callback_ = nullptr;
520 void* callback_user_ = nullptr;
521 std::uint32_t response_deadline_ms_ = 0;
522 std::uint32_t inter_byte_deadline_ms_ = 0;
523
524 std::array<std::uint8_t, kMaxRequestFrameBytes> tx_frame_ {};
525 std::size_t tx_frame_size_ = 0;
526 std::array<std::uint8_t, kMaxResponseFrameBytes> rx_frame_ {};
527 std::size_t rx_frame_size_ = 0;
528 std::array<std::uint8_t, kMaxRequestDataBytes> request_data_ {};
529
530 BatchReadWordsRequest batch_read_words_request_ {};
531 ExtendedFileRegisterBatchReadWordsRequest extended_file_register_read_request_ {};
532 ExtendedFileRegisterDirectBatchReadWordsRequest direct_extended_file_register_read_request_ {};
533 BatchReadBitsRequest batch_read_bits_request_ {};
534 UserFrameReadRequest user_frame_read_request_ {};
535 QualifiedBufferWordDevice extended_batch_words_device_ {};
536 std::uint16_t extended_batch_words_points_ = 0;
537#if MCPROTOCOL_SERIAL_ENABLE_HOST_BUFFER_COMMANDS
538 HostBufferReadRequest host_buffer_read_request_ {};
539#endif
540#if MCPROTOCOL_SERIAL_ENABLE_MODULE_BUFFER_COMMANDS
541 ModuleBufferReadRequest module_buffer_read_request_ {};
542#endif
543
544 std::span<std::uint16_t> out_words_ {};
545 std::span<BitValue> out_bits_ {};
546#if MCPROTOCOL_SERIAL_ENABLE_RANDOM_COMMANDS || MCPROTOCOL_SERIAL_ENABLE_MONITOR_COMMANDS
547 std::span<std::uint32_t> out_values_ {};
548#endif
549#if MCPROTOCOL_SERIAL_ENABLE_MODULE_BUFFER_COMMANDS
550 std::span<std::byte> out_bytes_ {};
551#endif
552#if MCPROTOCOL_SERIAL_ENABLE_LOOPBACK_COMMANDS
553 std::span<char> out_chars_ {};
554#endif
555#if MCPROTOCOL_SERIAL_ENABLE_MULTI_BLOCK_COMMANDS
556 std::span<MultiBlockReadBlockResult> out_block_results_ {};
557#endif
558#if MCPROTOCOL_SERIAL_ENABLE_CPU_MODEL_COMMANDS
559 CpuModelInfo* out_cpu_model_ = nullptr;
560#endif
561 UserFrameRegistrationData* out_user_frame_data_ = nullptr;
562
563#if MCPROTOCOL_SERIAL_ENABLE_RANDOM_COMMANDS || MCPROTOCOL_SERIAL_ENABLE_MONITOR_COMMANDS
564 std::array<RandomReadItem, kMaxRandomAccessItems> pending_random_items_ {};
565 std::size_t pending_random_item_count_ = 0;
566#endif
567#if MCPROTOCOL_SERIAL_ENABLE_MONITOR_COMMANDS
568 std::array<RandomReadItem, kMaxMonitorItems> monitor_items_ {};
569 std::size_t monitor_item_count_ = 0;
570 bool monitor_registered_ = false;
571 std::array<ExtendedFileRegisterAddress, kMaxMonitorItems> pending_extended_file_register_items_ {};
572 std::size_t pending_extended_file_register_item_count_ = 0;
573 std::array<ExtendedFileRegisterAddress, kMaxMonitorItems> extended_file_register_monitor_items_ {};
574 std::size_t extended_file_register_monitor_item_count_ = 0;
575 bool extended_file_register_monitor_registered_ = false;
576#endif
577#if MCPROTOCOL_SERIAL_ENABLE_MULTI_BLOCK_COMMANDS
578 std::array<MultiBlockReadBlock, kMaxMultiBlockCount> pending_multi_blocks_ {};
579 std::size_t pending_multi_block_count_ = 0;
580#endif
581#if MCPROTOCOL_SERIAL_ENABLE_LOOPBACK_COMMANDS
582 std::array<char, kMaxLoopbackBytes> pending_loopback_ {};
583 std::size_t pending_loopback_size_ = 0;
584#endif
585};
586
587} // namespace mcprotocol::serial
Asynchronous MC protocol client for UART / serial integrations.
Definition client.hpp:37
Status async_link_direct_random_write_words(std::uint32_t now_ms, std::span< const LinkDirectRandomWriteWordItem > items, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... random word write (1402 + device extension specification).
Status async_read_extended_file_register_monitor(std::uint32_t now_ms, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts extended file-register monitor read.
std::span< const std::byte > pending_tx_frame() const noexcept
Returns the encoded frame that should be sent to the UART layer.
Status async_batch_write_words(std::uint32_t now_ms, const BatchWriteWordsRequest &request, CompletionHandler callback, void *user) noexcept
Starts contiguous word write (1401).
Status async_control_global_signal(std::uint32_t now_ms, const GlobalSignalControlRequest &request, CompletionHandler callback, void *user) noexcept
Starts C24 global-signal ON/OFF control (1618).
Status async_remote_latch_clear(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts remote latch clear (1005).
Status async_random_read(std::uint32_t now_ms, const RandomReadRequest &request, std::span< std::uint32_t > out_values, CompletionHandler callback, void *user) noexcept
Starts native random read (0403).
Status async_link_direct_register_monitor(std::uint32_t now_ms, const LinkDirectMonitorRegistration &request, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... monitor registration (0801 + device extension specification).
Status async_link_direct_random_read(std::uint32_t now_ms, std::span< const LinkDirectRandomReadItem > items, std::span< std::uint32_t > out_values, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... random read (0403 + device extension specification).
bool busy() const noexcept
Returns whether a request is currently in flight.
Status async_direct_write_extended_file_register_words(std::uint32_t now_ms, const ExtendedFileRegisterDirectBatchWriteWordsRequest &request, CompletionHandler callback, void *user) noexcept
Starts direct extended file-register word write.
Status async_unlock_remote_password(std::uint32_t now_ms, std::string_view remote_password, CompletionHandler callback, void *user) noexcept
Unlocks remote-password-protected access (1630).
Status async_extended_batch_read_words(std::uint32_t now_ms, const QualifiedBufferWordDevice &device, std::uint16_t points, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts helper qualified word read over module-buffer access.
Status async_register_extended_file_register_monitor(std::uint32_t now_ms, const ExtendedFileRegisterMonitorRegistration &request, CompletionHandler callback, void *user) noexcept
Starts extended file-register monitor registration.
Status async_link_direct_batch_write_bits(std::uint32_t now_ms, const LinkDirectDevice &device, std::span< const BitValue > bits, CompletionHandler callback, void *user) noexcept
Starts Jn\\... link-direct contiguous bit write over device extension specification.
Status async_initialize_c24_transmission_sequence(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts C24 transmission-sequence initialization (1615).
Status async_link_direct_batch_read_bits(std::uint32_t now_ms, const LinkDirectDevice &device, std::uint16_t points, std::span< BitValue > out_bits, CompletionHandler callback, void *user) noexcept
Starts Jn\\... link-direct bit read over device extension specification.
Status async_link_direct_batch_read_words(std::uint32_t now_ms, const LinkDirectDevice &device, std::uint16_t points, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts Jn\\... link-direct word read over device extension specification.
Status async_deregister_cpu_monitoring(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts programmable-controller CPU monitoring deregistration (0631).
Status async_write_host_buffer(std::uint32_t now_ms, const HostBufferWriteRequest &request, CompletionHandler callback, void *user) noexcept
Starts host-buffer write (1613).
Status async_read_user_frame(std::uint32_t now_ms, const UserFrameReadRequest &request, UserFrameRegistrationData &out_data, CompletionHandler callback, void *user) noexcept
Starts user-frame registration-data read (0610).
Status async_multi_block_write(std::uint32_t now_ms, const MultiBlockWriteRequest &request, CompletionHandler callback, void *user) noexcept
Starts native multi-block write (1406).
Status async_delete_user_frame(std::uint32_t now_ms, const UserFrameDeleteRequest &request, CompletionHandler callback, void *user) noexcept
Starts user-frame registration-data delete (1610, subcommand 0001).
Status async_multi_block_read(std::uint32_t now_ms, const MultiBlockReadRequest &request, std::span< std::uint16_t > out_words, std::span< BitValue > out_bits, std::span< MultiBlockReadBlockResult > out_results, CompletionHandler callback, void *user) noexcept
Starts native multi-block read (0406).
Status async_remote_pause(std::uint32_t now_ms, RemoteOperationMode mode, CompletionHandler callback, void *user) noexcept
Starts remote PAUSE (1003).
void cancel() noexcept
Cancels the in-flight request and clears transient state.
Status async_link_direct_batch_write_words(std::uint32_t now_ms, const LinkDirectDevice &device, std::span< const std::uint16_t > words, CompletionHandler callback, void *user) noexcept
Starts Jn\\... link-direct contiguous word write over device extension specification.
Status async_read_host_buffer(std::uint32_t now_ms, const HostBufferReadRequest &request, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts host-buffer read (0613).
Status async_read_monitor(std::uint32_t now_ms, std::span< std::uint32_t > out_values, CompletionHandler callback, void *user) noexcept
Starts monitor read (0802) using the most recent registration.
Status async_link_direct_multi_block_write(std::uint32_t now_ms, const LinkDirectMultiBlockWriteRequest &request, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... multi-block write (1406 + device extension specification).
Status async_link_direct_random_write_bits(std::uint32_t now_ms, std::span< const LinkDirectRandomWriteBitItem > items, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... random bit write (1402 + device extension specification).
Status configure(const ProtocolConfig &config) noexcept
Stores protocol settings and validates the static configuration.
Status async_read_module_buffer(std::uint32_t now_ms, const ModuleBufferReadRequest &request, std::span< std::byte > out_bytes, CompletionHandler callback, void *user) noexcept
Starts module-buffer byte read (0601).
Status async_loopback(std::uint32_t now_ms, std::span< const char > hex_ascii, std::span< char > out_echoed, CompletionHandler callback, void *user) noexcept
Starts loopback using hexadecimal ASCII payload bytes.
Status async_remote_stop(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts remote STOP (1002).
void set_rs485_hooks(const Rs485Hooks &hooks) noexcept
Installs optional RS-485 TX begin/end hooks used by the async workflow.
Status async_write_user_frame(std::uint32_t now_ms, const UserFrameWriteRequest &request, CompletionHandler callback, void *user) noexcept
Starts user-frame registration-data write (1610, subcommand 0000).
void poll(std::uint32_t now_ms) noexcept
Checks timeouts for the current in-flight request.
Status async_link_direct_multi_block_read(std::uint32_t now_ms, const LinkDirectMultiBlockReadRequest &request, std::span< std::uint16_t > out_words, std::span< BitValue > out_bits, std::span< MultiBlockReadBlockResult > out_results, CompletionHandler callback, void *user) noexcept
Starts native Jn\\... multi-block read (0406 + device extension specification).
Status async_write_module_buffer(std::uint32_t now_ms, const ModuleBufferWriteRequest &request, CompletionHandler callback, void *user) noexcept
Starts module-buffer byte write (1601).
Status async_clear_error_information(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts clear error information (1617) for serial/C24 targets.
Status notify_tx_complete(std::uint32_t now_ms, Status transport_status=ok_status()) noexcept
Advances the state machine after the transport finished sending the pending frame.
Status async_direct_read_extended_file_register_words(std::uint32_t now_ms, const ExtendedFileRegisterDirectBatchReadWordsRequest &request, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts direct extended file-register word read.
Status async_batch_write_bits(std::uint32_t now_ms, const BatchWriteBitsRequest &request, CompletionHandler callback, void *user) noexcept
Starts contiguous bit write (1401 bit path).
Status async_random_write_bits(std::uint32_t now_ms, std::span< const RandomWriteBitItem > items, CompletionHandler callback, void *user) noexcept
Starts native random bit write (1402 bit path).
Status async_write_extended_file_register_words(std::uint32_t now_ms, const ExtendedFileRegisterBatchWriteWordsRequest &request, CompletionHandler callback, void *user) noexcept
Starts extended file-register word write.
Status async_batch_read_words(std::uint32_t now_ms, const BatchReadWordsRequest &request, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts contiguous word read (0401).
Status async_remote_reset(std::uint32_t now_ms, CompletionHandler callback, void *user) noexcept
Starts remote RESET (1006).
Status async_remote_run(std::uint32_t now_ms, RemoteOperationMode mode, RemoteRunClearMode clear_mode, CompletionHandler callback, void *user) noexcept
Starts remote RUN (1001).
Status async_batch_read_bits(std::uint32_t now_ms, const BatchReadBitsRequest &request, std::span< BitValue > out_bits, CompletionHandler callback, void *user) noexcept
Starts contiguous bit read (0401 bit path).
Status async_read_extended_file_register_words(std::uint32_t now_ms, const ExtendedFileRegisterBatchReadWordsRequest &request, std::span< std::uint16_t > out_words, CompletionHandler callback, void *user) noexcept
Starts extended file-register word read.
Status async_random_write_words(std::uint32_t now_ms, std::span< const RandomWriteWordItem > items, CompletionHandler callback, void *user) noexcept
Starts native random word/dword write (1402 word path).
Status async_extended_batch_write_words(std::uint32_t now_ms, const QualifiedBufferWordDevice &device, std::span< const std::uint16_t > words, CompletionHandler callback, void *user) noexcept
Starts helper qualified word write over module-buffer access.
void on_rx_bytes(std::uint32_t now_ms, std::span< const std::byte > bytes) noexcept
Feeds received bytes into the response decoder.
Status async_register_monitor(std::uint32_t now_ms, const MonitorRegistration &request, CompletionHandler callback, void *user) noexcept
Starts monitor registration (0801).
Status async_random_write_extended_file_register_words(std::uint32_t now_ms, std::span< const ExtendedFileRegisterRandomWriteWordItem > items, CompletionHandler callback, void *user) noexcept
Starts extended file-register random word write.
Status async_lock_remote_password(std::uint32_t now_ms, std::string_view remote_password, CompletionHandler callback, void *user) noexcept
Locks remote-password-protected access (1631).
Status async_read_cpu_model(std::uint32_t now_ms, CpuModelInfo &out_info, CompletionHandler callback, void *user) noexcept
Starts CPU-model read.
Frame-level and command-payload-level encode/decode helpers.
RemoteOperationMode
Conflict-handling mode for remote RUN / PAUSE.
Definition types.hpp:249
BitValue
Logical single-bit value used by bit read/write APIs.
Definition types.hpp:243
constexpr Status ok_status() noexcept
Returns the default success status.
Definition status.hpp:37
void(*)(void *user, Status status) CompletionHandler
Completion callback used by the async client.
Definition types.hpp:651
RemoteRunClearMode
Clear scope applied during remote RUN initialization.
Definition types.hpp:255
Contiguous bit-read request (0401 bit path).
Definition types.hpp:377
Contiguous bit-write request (1401 bit path).
Definition types.hpp:393
Contiguous word-write request (1401).
Definition types.hpp:385
Extended file-register batch write (EW on 1C ACPU-common, chapter-18 block path on 1E).
Definition types.hpp:420
Direct extended file-register batch read (NR on 1C QnA-common, chapter-18 direct path on 1E).
Definition types.hpp:412
Direct extended file-register batch write (NW on 1C QnA-common, chapter-18 direct path on 1E).
Definition types.hpp:428
Extended file-register monitor registration (EM on 1C, chapter-18 on 1E).
Definition types.hpp:444
One item inside extended file-register random write (ET on 1C, chapter-18 on 1E).
Definition types.hpp:436
C24 global-signal ON/OFF request (1618).
Definition types.hpp:579
Host-buffer write request (1613).
Definition types.hpp:600
Parsed Jn\\... link-direct device reference such as J1\\W100.
Jn\\... monitor registration payload (0801 + device extension specification).
Jn\\... native multi-block read request.
Jn\\... native multi-block write request.
One sparse Jn\\... item used by native random-read and monitor registration.
One sparse Jn\\... bit item used by native random bit-write.
One sparse Jn\\... word item used by native random word-write.
Module-buffer byte read request (0601 helper path).
Definition types.hpp:608
Module-buffer byte write request (1601 helper path).
Definition types.hpp:618
Parsed layout description for one block returned by parse_multi_block_read_response().
Definition types.hpp:521
Native multi-block read request composed of multiple contiguous blocks.
Definition types.hpp:495
Native multi-block write request composed of multiple contiguous blocks.
Definition types.hpp:515
Top-level protocol configuration shared by codecs and client requests.
Definition types.hpp:323
Parsed U...\\G... or U...\\HG... qualified word device.
Native random-read request made of sparse word/dword items.
Definition types.hpp:461
One bit item inside native random write (1402 bit path).
Definition types.hpp:477
One word or double-word item inside native random write (1402 word path).
Definition types.hpp:467
Optional RS-485 callbacks used by the async client around TX start/end.
Definition types.hpp:639
Result object returned by most public APIs.
Definition status.hpp:26
User-frame registration-data delete request (1610, subcommand 0001).
Definition types.hpp:573
User-frame registration-data payload returned by 0610.
Definition types.hpp:553
User-frame registration-data write request (1610, subcommand 0000).
Definition types.hpp:563