]> www.fi.muni.cz Git - openparking.git/blobdiff - firmware/modbus.h
error counters to modbus
[openparking.git] / firmware / modbus.h
index 9f5afa6f7329d0c9971cbcb215bbc55500b5b025..3a3fcdf28e6fed2db6f6e929049b68b33d64a8ee 100644 (file)
@@ -8,8 +8,17 @@
  * All bugs by Jan "Yenya" Kasprzak <kas@fi.muni.cz> :-)
  */
 
+/*
+ * Call this at the beginning of the program.
+ */
 void modbus_init(uint8_t unit_id);
-void modbus_poll();
+
+/*
+ * Call this frequently. Returns 0 when no data was received
+ * and the processing went on quickly. Returns 1 after potentially lengthy
+ * packet processing.
+ */
+uint8_t modbus_poll();
 
 typedef enum {
        MB_OK = 0,
@@ -18,11 +27,11 @@ typedef enum {
        MB_ILLEGAL_VAL  = 3,
 } mb_exception;
 
-#define MB_HOLD_REGS_BASE      1000
-#define MB_N_HOLD_REGS         60
-#define MB_N_HOLD_REGS_EEPROM  20
+#define MB_HOLD_REGS_BASE      0       // first register
+#define MB_N_HOLD_REGS         80      // total # of registers
+#define MB_N_HOLD_REGS_EEPROM  20      // the first N registers eeprom-backed
 extern uint16_t hold_regs[MB_N_HOLD_REGS];
-#define mb_unit_id     (hold_regs[0])
+#define mb_unit_id     (hold_regs[0])  // MODBUS id in the first register
 
 uint8_t hold_reg_is_valid(uint16_t reg, uint16_t val);