Displays a value on an RS display board

Dependencies:   EthernetInterface PCA9635 dispBoB mbed-rtos mbed munin-client-lib

Displaying values retrieved from a munin node on an RS display board. Porting this code to work with an alternative display should be trivial, I have also used an mbed application board's LCD to display the values for example.

Hardware

Software

Most of the work is done by libraries that are freely available on mbed.org. The code uses the lwip based EthernetInterface library. The only code I had to write was submit a command to a munin node and parse it's response.

Testing

The software has currently been running for around 2 weeks without any problems. On a previous run it stopped updating after 4 days.

Committer:
PrzemekWirkus
Date:
Tue Apr 15 09:36:43 2014 +0000
Revision:
8:17b925cab77c
Parent:
7:951c113bba49
Refactored to use munin-client-lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PrzemekWirkus 8:17b925cab77c 1 #include "munincli.h"
stevep 0:98c94cf86eb8 2 #include "dispBoB.h"
PrzemekWirkus 3:56c6df84e619 3
PrzemekWirkus 8:17b925cab77c 4 namespace
PrzemekWirkus 8:17b925cab77c 5 {
PrzemekWirkus 8:17b925cab77c 6 const char* MUNIN_SERVER_ADDRESS = "172.28.22.45";
PrzemekWirkus 8:17b925cab77c 7 const int MUNIN_SERVER_PORT = 4949;
PrzemekWirkus 8:17b925cab77c 8 }
PrzemekWirkus 8:17b925cab77c 9
PrzemekWirkus 3:56c6df84e619 10 namespace {
PrzemekWirkus 8:17b925cab77c 11 // Munin command(s):
PrzemekWirkus 8:17b925cab77c 12 char CMD_FETCH_USERS[] = "fetch users\n";
PrzemekWirkus 3:56c6df84e619 13 }
stevep 0:98c94cf86eb8 14
stevep 0:98c94cf86eb8 15
PrzemekWirkus 8:17b925cab77c 16 int main()
PrzemekWirkus 8:17b925cab77c 17 {
PrzemekWirkus 8:17b925cab77c 18 MuninClient munin_lcd;
PrzemekWirkus 8:17b925cab77c 19 munin_lcd.dhcp_connection(); // DHCP connection
PrzemekWirkus 8:17b925cab77c 20 dispBoB bob_display(p28, p27, p26);
PrzemekWirkus 3:56c6df84e619 21
PrzemekWirkus 3:56c6df84e619 22 while(true) {
PrzemekWirkus 5:5c0288a4e2c7 23 while (munin_lcd.socket_connection(MUNIN_SERVER_ADDRESS, MUNIN_SERVER_PORT) < 0) {
stevep 0:98c94cf86eb8 24 wait(1);
stevep 0:98c94cf86eb8 25 }
stevep 0:98c94cf86eb8 26
PrzemekWirkus 3:56c6df84e619 27 munin_lcd.socket_recv();
PrzemekWirkus 3:56c6df84e619 28 munin_lcd.socket_send(CMD_FETCH_USERS, sizeof(CMD_FETCH_USERS));
PrzemekWirkus 3:56c6df84e619 29 munin_lcd.socket_recv_all();
PrzemekWirkus 7:951c113bba49 30 {
PrzemekWirkus 7:951c113bba49 31 const char *param = "usercount.value";
PrzemekWirkus 8:17b925cab77c 32 const int counter_value = munin_lcd.get_param_value(param);
PrzemekWirkus 8:17b925cab77c 33 bob_display.cls();
PrzemekWirkus 8:17b925cab77c 34 bob_display.printf("% 6d\n", counter_value);
PrzemekWirkus 7:951c113bba49 35 }
PrzemekWirkus 8:17b925cab77c 36
PrzemekWirkus 3:56c6df84e619 37 munin_lcd.socket_close();
PrzemekWirkus 3:56c6df84e619 38 wait(3);
stevep 0:98c94cf86eb8 39 }
PrzemekWirkus 3:56c6df84e619 40 }