|
- #ifndef MODBUS_DATA_STORE_H
- #define MODBUS_DATA_STORE_H
-
- #include <stdint.h>
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /* Logical PLC word-device spaces. These values intentionally match the
- * PLSR D/HD/FD device codes, but this module does not depend on PLSR. */
- typedef enum
- {
- MODBUS_DATA_DEVICE_D = 0,
- MODBUS_DATA_DEVICE_HD,
- MODBUS_DATA_DEVICE_FD
- } MODBUS_DATA_DEVICE;
-
- #define MODBUS_DATA_D_WORD_COUNT (10000UL)
- #define MODBUS_DATA_HD_WORD_COUNT (10000UL)
- #define MODBUS_DATA_FD_WORD_COUNT (10000UL)
-
- uint8_t ModbusDataValidateWords(MODBUS_DATA_DEVICE device,
- uint32_t firstAddress,
- uint32_t wordCount);
- uint8_t ModbusDataReadWord(MODBUS_DATA_DEVICE device,
- uint32_t address,
- uint16_t *value);
- uint8_t ModbusDataReadDword(MODBUS_DATA_DEVICE device,
- uint32_t lowAddress,
- int32_t *value);
- uint8_t ModbusDataWriteWord(MODBUS_DATA_DEVICE device,
- uint32_t address,
- uint16_t value);
- uint8_t ModbusDataWriteWords(MODBUS_DATA_DEVICE device,
- uint32_t firstAddress,
- const uint16_t *values,
- uint32_t wordCount);
-
- /* Existing function 0x48 uses a sparse linear address space:
- * 0..19999 are normal SRAM and 40000..69998 are CCMRAM. */
- uint8_t ModbusDataReadLinear(uint32_t address, uint16_t *value);
-
- /* Even means stable; odd means a multi-register write is in progress. */
- uint32_t ModbusDataGetWriteSequence(void);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* MODBUS_DATA_STORE_H */
|