]> mj.ucw.cz Git - home-hw.git/blobdiff - test-modbus/test.c
Power daemon: A new daemon for relaying power meter data to MQTT
[home-hw.git] / test-modbus / test.c
index 96da0141e381b38189ae582974d764a589850551..e8909987baef0d4d2b9cda74929b72daf7f4b349 100644 (file)
@@ -33,6 +33,11 @@ static void gpio_setup(void)
        // PC13 = BluePill LED
        gpio_set_mode(GPIOC, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO13);
        gpio_clear(GPIOC, GPIO13);
+
+       // Pins for MODBUS USART
+       gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO_USART2_RX);
+       gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART2_TX);
+       gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO1);
 }
 
 static volatile u32 ms_ticks;
@@ -109,3 +114,62 @@ int main(void)
 
        return 0;
 }
+
+/*** Modbus callbacks ***/
+
+bool modbus_check_discrete_input(u16 addr UNUSED)
+{
+       return false;
+}
+
+bool modbus_get_discrete_input(u16 addr UNUSED)
+{
+       return false;
+}
+
+bool modbus_check_coil(u16 addr UNUSED)
+{
+       return false;
+}
+
+bool modbus_get_coil(u16 addr UNUSED)
+{
+       return false;
+}
+
+void modbus_set_coil(u16 addr UNUSED, bool value UNUSED)
+{
+}
+
+bool modbus_check_input_register(u16 addr UNUSED)
+{
+       return false;
+}
+
+u16 modbus_get_input_register(u16 addr UNUSED)
+{
+       return 0;
+}
+
+bool modbus_check_holding_register(u16 addr UNUSED)
+{
+       return (addr < 16);
+}
+
+u16 modbus_get_holding_register(u16 addr UNUSED)
+{
+       return 0xbeef;
+}
+
+void modbus_set_holding_register(u16 addr UNUSED, u16 value UNUSED)
+{
+}
+
+const char * const modbus_id_strings[MODBUS_ID_MAX] = {
+       [MODBUS_ID_VENDOR_NAME] = "United Computer Wizards",
+       [MODBUS_ID_PRODUCT_CODE] = "42",
+       [MODBUS_ID_MAJOR_MINOR_REVISION] = "1.0",
+       [MODBUS_ID_VENDOR_URL] = "http://www.ucw.cz/",
+       [MODBUS_ID_PRODUCT_NAME] = "Magic Gadget",
+       [MODBUS_ID_USER_APP_NAME] = NULL,
+};