Generic communication interface between the wireless board (mote) and the sensor board. Any kind of sensor board can be connected to the mote using this specification given it provides a SPI peripheral, one input pin with interrupt capability and one digital output. The sensor board must implement a special register set from which all required information can be retrieved. Protocol: http://is.gd/wuQorh Github: http://is.gd/ySj1L9

Dependencies:   mbed-src

Committer:
marcelobarrosalmeida
Date:
Tue Apr 08 16:34:20 2014 +0000
Revision:
1:acdf490d94a7
Adding accel to sensor list

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcelobarrosalmeida 1:acdf490d94a7 1 #include <stdio.h>
marcelobarrosalmeida 1:acdf490d94a7 2 #include <stdint.h>
marcelobarrosalmeida 1:acdf490d94a7 3 #include <string.h>
marcelobarrosalmeida 1:acdf490d94a7 4 #include <stdarg.h>
marcelobarrosalmeida 1:acdf490d94a7 5 #include <assert.h>
marcelobarrosalmeida 1:acdf490d94a7 6
marcelobarrosalmeida 1:acdf490d94a7 7 #include "sens_util.h"
marcelobarrosalmeida 1:acdf490d94a7 8
marcelobarrosalmeida 1:acdf490d94a7 9 #define MAX_LOG_BUF 256
marcelobarrosalmeida 1:acdf490d94a7 10 static char buffer[MAX_LOG_BUF];
marcelobarrosalmeida 1:acdf490d94a7 11
marcelobarrosalmeida 1:acdf490d94a7 12 static volatile int sens_util_log_started = 0;
marcelobarrosalmeida 1:acdf490d94a7 13
marcelobarrosalmeida 1:acdf490d94a7 14 void sens_util_assert(int cond)
marcelobarrosalmeida 1:acdf490d94a7 15 {
marcelobarrosalmeida 1:acdf490d94a7 16 assert(cond);
marcelobarrosalmeida 1:acdf490d94a7 17 }
marcelobarrosalmeida 1:acdf490d94a7 18
marcelobarrosalmeida 1:acdf490d94a7 19 const uint8_t *sens_util_strip_path(const uint8_t *filename)
marcelobarrosalmeida 1:acdf490d94a7 20 {
marcelobarrosalmeida 1:acdf490d94a7 21 int pos;
marcelobarrosalmeida 1:acdf490d94a7 22
marcelobarrosalmeida 1:acdf490d94a7 23 pos = strlen(filename) - 1; // avoiding null terminator
marcelobarrosalmeida 1:acdf490d94a7 24
marcelobarrosalmeida 1:acdf490d94a7 25 while( (filename[pos] != '\\') && (pos > 0) )
marcelobarrosalmeida 1:acdf490d94a7 26 pos--;
marcelobarrosalmeida 1:acdf490d94a7 27
marcelobarrosalmeida 1:acdf490d94a7 28 if(pos != 0)
marcelobarrosalmeida 1:acdf490d94a7 29 pos++; // removing "\"
marcelobarrosalmeida 1:acdf490d94a7 30
marcelobarrosalmeida 1:acdf490d94a7 31 return &filename[pos];
marcelobarrosalmeida 1:acdf490d94a7 32 }
marcelobarrosalmeida 1:acdf490d94a7 33
marcelobarrosalmeida 1:acdf490d94a7 34 void sens_util_log(int cond, const uint8_t *line, ...)
marcelobarrosalmeida 1:acdf490d94a7 35 {
marcelobarrosalmeida 1:acdf490d94a7 36 va_list argp;
marcelobarrosalmeida 1:acdf490d94a7 37
marcelobarrosalmeida 1:acdf490d94a7 38 if((!cond) || (!sens_util_log_started))
marcelobarrosalmeida 1:acdf490d94a7 39 return;
marcelobarrosalmeida 1:acdf490d94a7 40
marcelobarrosalmeida 1:acdf490d94a7 41 va_start(argp, line);
marcelobarrosalmeida 1:acdf490d94a7 42 vsnprintf(buffer,MAX_LOG_BUF,line, argp);
marcelobarrosalmeida 1:acdf490d94a7 43 va_end(argp);
marcelobarrosalmeida 1:acdf490d94a7 44
marcelobarrosalmeida 1:acdf490d94a7 45 buffer[MAX_LOG_BUF-1] = '\0';
marcelobarrosalmeida 1:acdf490d94a7 46
marcelobarrosalmeida 1:acdf490d94a7 47 // TODO
marcelobarrosalmeida 1:acdf490d94a7 48 // define destination for this buffer: ethernet, serial, console, syslog ...
marcelobarrosalmeida 1:acdf490d94a7 49 //
marcelobarrosalmeida 1:acdf490d94a7 50 printf("%s",buffer);
marcelobarrosalmeida 1:acdf490d94a7 51 }
marcelobarrosalmeida 1:acdf490d94a7 52
marcelobarrosalmeida 1:acdf490d94a7 53 void sens_util_dump_frame(const uint8_t * const data, int len)
marcelobarrosalmeida 1:acdf490d94a7 54 {
marcelobarrosalmeida 1:acdf490d94a7 55 int i, j, k;
marcelobarrosalmeida 1:acdf490d94a7 56 uint8_t buf[50];
marcelobarrosalmeida 1:acdf490d94a7 57
marcelobarrosalmeida 1:acdf490d94a7 58 for(k = 0 ; k < len ; k += 16)
marcelobarrosalmeida 1:acdf490d94a7 59 {
marcelobarrosalmeida 1:acdf490d94a7 60 for(i = k, j = 0 ; ( i< (k+16) ) && ( i < len ) ; i++, j+=3 )
marcelobarrosalmeida 1:acdf490d94a7 61 sprintf((char *)&buf[j],"%02X ",data[i]);
marcelobarrosalmeida 1:acdf490d94a7 62 buf[j] = '\0';
marcelobarrosalmeida 1:acdf490d94a7 63 sens_util_log(1,"%s",buf);
marcelobarrosalmeida 1:acdf490d94a7 64 }
marcelobarrosalmeida 1:acdf490d94a7 65 }
marcelobarrosalmeida 1:acdf490d94a7 66
marcelobarrosalmeida 1:acdf490d94a7 67 int sens_util_log_stop(void)
marcelobarrosalmeida 1:acdf490d94a7 68 {
marcelobarrosalmeida 1:acdf490d94a7 69 if(sens_util_log_started)
marcelobarrosalmeida 1:acdf490d94a7 70 sens_util_log_started = 0;
marcelobarrosalmeida 1:acdf490d94a7 71
marcelobarrosalmeida 1:acdf490d94a7 72 return 0;
marcelobarrosalmeida 1:acdf490d94a7 73 }
marcelobarrosalmeida 1:acdf490d94a7 74
marcelobarrosalmeida 1:acdf490d94a7 75 int sens_util_log_start(void)
marcelobarrosalmeida 1:acdf490d94a7 76 {
marcelobarrosalmeida 1:acdf490d94a7 77 if(!sens_util_log_started)
marcelobarrosalmeida 1:acdf490d94a7 78 sens_util_log_started = 1;
marcelobarrosalmeida 1:acdf490d94a7 79
marcelobarrosalmeida 1:acdf490d94a7 80 return 0;
marcelobarrosalmeida 1:acdf490d94a7 81 }