Contiki 2.6
|
00001 #ifndef __AVR_SETTINGS_H__ 00002 #define __AVR_SETTINGS_H__ 00003 00004 #include <inttypes.h> 00005 #include <stdlib.h> 00006 #include <stdbool.h> 00007 00008 typedef uint16_t settings_key_t; 00009 00010 #define SETTINGS_KEY_EUI64 'E'*256+'8' //!< Value always 8 bytes long 00011 #define SETTINGS_KEY_EUI48 'E'*256+'6' //!< Value always 8 bytes long 00012 #define SETTINGS_KEY_CHANNEL 'C'*256+'H' //!< Value always 1 byte long 00013 #define SETTINGS_KEY_TXPOWER 'T'*256+'P' //!< Value always 1 byte long 00014 #define SETTINGS_KEY_PAN_ID 'P'*256+'N' //!< Value always 2 bytes long 00015 #define SETTINGS_KEY_PAN_ADDR 'P'*256+'A' //!< Value always 2 bytes long 00016 #define SETTINGS_KEY_AES128KEY 'S'*256+'K' //!< Value always 16 bytes long 00017 #define SETTINGS_KEY_AES128ENABLED 'S'*256+'E' //!< Value always 16 bytes long 00018 00019 typedef enum { 00020 SETTINGS_STATUS_OK=0, 00021 SETTINGS_STATUS_INVALID_ARGUMENT, 00022 SETTINGS_STATUS_NOT_FOUND, 00023 SETTINGS_STATUS_OUT_OF_SPACE, 00024 SETTINGS_STATUS_UNIMPLEMENTED, 00025 SETTINGS_STATUS_FAILURE, 00026 } settings_status_t; 00027 00028 // Use this when you want to retrieve the last item 00029 #define SETTINGS_LAST_INDEX (0xFF) 00030 00031 #define SETTINGS_INVALID_KEY (0x00) 00032 00033 #define SETTINGS_MAX_VALUE_SIZE (0x3FFF) // 16383 bytes 00034 00035 extern settings_status_t settings_get(settings_key_t key,uint8_t index,unsigned char* value,size_t* value_size); 00036 extern settings_status_t settings_add(settings_key_t key,const unsigned char* value,size_t value_size); 00037 extern bool settings_check(settings_key_t key,uint8_t index); 00038 extern void settings_wipe(void); 00039 00040 extern settings_status_t settings_set(settings_key_t key,const unsigned char* value,size_t value_size); 00041 extern settings_status_t settings_delete(settings_key_t key,uint8_t index); 00042 00043 //#pragma mark - 00044 //#pragma mark Inline convenience functions 00045 00046 static inline uint8_t 00047 settings_get_uint8(settings_key_t key,uint8_t index) { 00048 uint8_t ret = 0; 00049 size_t sizeof_uint8 = sizeof(uint8_t); 00050 settings_get(key,index,(unsigned char*)&ret,&sizeof_uint8); 00051 return ret; 00052 } 00053 00054 static inline settings_status_t 00055 settings_add_uint8(settings_key_t key,uint8_t value) { 00056 return settings_add(key,(const unsigned char*)&value,sizeof(uint8_t)); 00057 } 00058 00059 static inline settings_status_t 00060 settings_set_uint8(settings_key_t key,uint8_t value) { 00061 return settings_set(key,(const unsigned char*)&value,sizeof(uint8_t)); 00062 } 00063 00064 static inline uint16_t 00065 settings_get_uint16(settings_key_t key,uint8_t index) { 00066 uint16_t ret = 0; 00067 size_t sizeof_uint16 = sizeof(uint16_t); 00068 settings_get(key,index,(unsigned char*)&ret,&sizeof_uint16); 00069 return ret; 00070 } 00071 00072 static inline settings_status_t 00073 settings_add_uint16(settings_key_t key,uint16_t value) { 00074 return settings_add(key,(const unsigned char*)&value,sizeof(uint16_t)); 00075 } 00076 00077 static inline settings_status_t 00078 settings_set_uint16(settings_key_t key,uint16_t value) { 00079 return settings_set(key,(const unsigned char*)&value,sizeof(uint16_t)); 00080 } 00081 00082 static inline uint32_t 00083 settings_get_uint32(settings_key_t key,uint8_t index) { 00084 uint32_t ret = 0; 00085 size_t sizeof_uint32 = sizeof(uint32_t); 00086 settings_get(key,index,(unsigned char*)&ret,&sizeof_uint32); 00087 return ret; 00088 } 00089 00090 static inline settings_status_t 00091 settings_add_uint32(settings_key_t key,uint32_t value) { 00092 return settings_add(key,(const unsigned char*)&value,sizeof(uint32_t)); 00093 } 00094 00095 static inline settings_status_t 00096 settings_set_uint32(settings_key_t key,uint32_t value) { 00097 return settings_set(key,(const unsigned char*)&value,sizeof(uint32_t)); 00098 } 00099 00100 static inline uint64_t 00101 settings_get_uint64(settings_key_t key,uint8_t index) { 00102 uint64_t ret = 0; 00103 size_t sizeof_uint64 = sizeof(uint64_t); 00104 settings_get(key,index,(unsigned char*)&ret,&sizeof_uint64); 00105 return ret; 00106 } 00107 00108 static inline settings_status_t 00109 settings_add_uint64(settings_key_t key,uint64_t value) { 00110 return settings_add(key,(const unsigned char*)&value,sizeof(uint64_t)); 00111 } 00112 00113 static inline settings_status_t 00114 settings_set_uint64(settings_key_t key,uint64_t value) { 00115 return settings_set(key,(const unsigned char*)&value,sizeof(uint64_t)); 00116 } 00117 00118 #endif