#include "plsr_modbus_data.h" #include "modbus_data_store.h" #include static uint8_t PlsrModbusDevice(PLSR_DEVICE_TYPE device, MODBUS_DATA_DEVICE *modbusDevice) { if ((modbusDevice == NULL) || (device > PLSR_DEVICE_FD)) { return 0U; } *modbusDevice = (MODBUS_DATA_DEVICE)device; return 1U; } static uint8_t PlsrModbusValidateWords(void *context, PLSR_DEVICE_TYPE device, uint32_t firstAddress, uint32_t wordCount) { MODBUS_DATA_DEVICE modbusDevice; (void)context; if (PlsrModbusDevice(device, &modbusDevice) == 0U) { return 0U; } return ModbusDataValidateWords(modbusDevice, firstAddress, wordCount); } static uint8_t PlsrModbusReadWord(void *context, PLSR_DEVICE_TYPE device, uint32_t address, uint16_t *value) { MODBUS_DATA_DEVICE modbusDevice; (void)context; if (PlsrModbusDevice(device, &modbusDevice) == 0U) { return 0U; } return ModbusDataReadWord(modbusDevice, address, value); } static uint8_t PlsrModbusReadDword(void *context, PLSR_DEVICE_TYPE device, uint32_t address, int32_t *value) { MODBUS_DATA_DEVICE modbusDevice; (void)context; if (PlsrModbusDevice(device, &modbusDevice) == 0U) { return 0U; } return ModbusDataReadDword(modbusDevice, address, value); } static uint8_t PlsrModbusBitDevice(PLSR_DEVICE_TYPE device, MODBUS_BIT_DEVICE *modbusDevice) { if ((modbusDevice == NULL) || (device < PLSR_DEVICE_X) || (device > PLSR_DEVICE_HM)) { return 0U; } *modbusDevice = (MODBUS_BIT_DEVICE)(device - PLSR_DEVICE_X); return 1U; } static uint8_t PlsrModbusReadBit(void *context, PLSR_DEVICE_TYPE device, uint32_t address, uint8_t *value) { MODBUS_BIT_DEVICE modbusDevice; (void)context; if (PlsrModbusBitDevice(device, &modbusDevice) == 0U) { return 0U; } return ModbusDataReadBit(modbusDevice, address, value); } void PlsrModbusDataSourceInit(PLSR_DATA_SOURCE *source) { if (source == NULL) { return; } source->context = NULL; source->validateWords = PlsrModbusValidateWords; source->readWord = PlsrModbusReadWord; source->readDword = PlsrModbusReadDword; source->readBit = PlsrModbusReadBit; }