![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
MAIN
Fork of SOFT253_Template_Weather_OS_54 by
prompt.cpp
- Committer:
- J_Satchell
- Date:
- 2017-05-15
- Revision:
- 37:13f74964a045
- Parent:
- 36:af6abc6f7590
File content as of revision 37:13f74964a045:
#include "mbed.h" #include "log.hpp" #include "Data.hpp" /* prompt deals with all user inputs and what functions should run in response */ Serial serial(USBTX, USBRX); Mutex mutex_p; /*function for writing out a record with time struct to format time*/ void prompt_write_entry(Data entry){ ; time_t currenttime = entry.logtime; tm* timenew = localtime(¤ttime); serial.printf("%4.2fC %3.1f%% %6.1f %i %i %i \r\n", entry.tempCelsius, entry.humi, entry.pressure, timenew->tm_hour, timenew->tm_min, timenew->tm_sec); } void readline(char* buffer) { int i = 0; while (1) { char c = serial.getc(); serial.putc(c); buffer[i] = c; if (c == '\n' || c == '\r') break; else i ++; } buffer[i] = '\0'; } void prompt_init() { serial.printf("Welcome to the nucleo board low level environmental sensor, type 'help' for commands\r\n"); } void prompt_interpret(char* cmd) { mutex_p.lock(); int input; int n = log_length(); int hours; int minutes; int seconds; n = (n - 1); if (strcmp(cmd, "help") == 0) { serial.printf("Commands:\r\n help -\r\n READ ALL - Show all records \r\n READ <n> = Show specified amount of records \r\n SETTIME <hh> <mm> <ss> = Set the time \r\n DELETE ALL = Deletes all records \r\n DELETE <n> = deletes the oldest record \r\n "); } else if (strcmp(cmd, "READ ALL") == 0) { serial.printf("\r\n"); for (int i = n - 1; i >= 1; i--) { Data entry = log_get(i); prompt_write_entry(entry); } } else if (sscanf(cmd, "READ %i", &input) == 1) { serial.printf("\r\n"); int n = log_length(); if (input > n){ input = n; } for (int i = input - 1; i >= 1; i--) { Data entry = log_get(i); prompt_write_entry(entry); } } else if (sscanf(cmd, "SETTIME %i %i %i", &hours, &minutes, &seconds) == 3){ serial.printf("\r\n"); time_t currenttime = time(0); tm* timenew = localtime(¤ttime); timenew->tm_hour = hours; timenew->tm_min = minutes; timenew->tm_sec = seconds; set_time(mktime(timenew)); } else if (strcmp(cmd, "DELETE_ALL") == 0) { serial.printf("\r\n"); for (int i = n - 1; i >= 1; i--) { log_pop(); } } else if (sscanf(cmd, "DELETE %i", &input) == 1) { serial.printf("\r\n"); int n = log_length(); if (input > n){ input = n; } for (int i = input - 1; i >= 1; i--) { log_pop(); } } else { serial.printf("Unknown command!\r\n"); } mutex_p.unlock(); } void prompt_run() { while (1) { char buffer[64]; readline(buffer); prompt_interpret(buffer); } }