00001
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include <string.h>
00036 #include "sense_impl.h"
00037 #include "sensix.h"
00038
00039 #ifndef TINYOS
00040 #include <stdlib.h>
00041 #include <unistd.h>
00042 #include <stdint.h>
00043 #include <errno.h>
00044 #include "stacktrace.h"
00045
00046 char lock_file[255];
00047
00048
00049 void die(const char *s, const char *extra)
00050 {
00051 if (errno)
00052 log_error("%s: %s %s %s\n", APP, s, strerror(errno), extra);
00053 else
00054 log_error("%s: %s %s\n", APP, s, extra);
00055
00056 descendants_shutdown(0);
00057 ancestors_shutdown(0);
00058
00059 stop_log();
00060 unlink(lock_file);
00061
00062 exit(-1);
00063 }
00064 #endif
00065
00066
00067 void capabilityToString(char *str, unsigned char cap) {
00068 switch (cap) {
00069 case LIGHT:
00070 strcpy(str, "Light");
00071 case TEMP:
00072 strcpy(str, "Temperature");
00073 case ACCEL:
00074 strcpy(str, "Accelerometer");
00075 case MAG:
00076 strcpy(str, "Magnetometer");
00077 case HUMID:
00078 strcpy(str, "Humidity");
00079 case GPS:
00080 strcpy(str, "GPS");
00081 case BATTERY:
00082 strcpy(str, "Battery");
00083 default:
00084 strcpy(str, "Unknown");
00085 }
00086 }
00087
00088
00089 unsigned char isIntegerData(char d) {
00090 switch (d) {
00091 case 'd':
00092 case 'i':
00093 case 'u':
00094 case 'x':
00095 return 1;
00096 default:
00097 return 0;
00098 }
00099 }
00100
00101 unsigned char isFloatingPointData(char d) {
00102 switch (d) {
00103 case 'f':
00104 case 'e':
00105 case 'g':
00106 case 'a':
00107 return 1;
00108 default:
00109 return 0;
00110 }
00111 }