#include #include #include #include "sqlite3.h" #include "sql_api.h" int callback_db(void *ptr, int count) { usleep(500000); return -1; } int do_cmd_str(char* sql) { int rc; sqlite3* db; char *errmsg = NULL; rc = sqlite3_open(SQL_NAME, &db); if ( rc != SQLITE_OK ) { printf("ERROR: open sqlite %s \r\n",sqlite3_errmsg(db)); sqlite3_close(db); return -1; } sqlite3_busy_handler(db, callback_db, (void*)db); rc = sqlite3_exec(db,sql,NULL,NULL,&errmsg); if (rc != SQLITE_OK ) { printf("ERROR: %s-%s \r\n", sql, errmsg); sqlite3_close(db); return -1; } sqlite3_close(db); return 0; } //初始化设备数据库 int init_device_db(void) { char cmd[MAX_TXET_LEN]; sprintf(cmd,"%s","create table if not exists device_db(device_id text primary key , device_name text, device_addr integer unique, application_id text);"); if(do_cmd_str(cmd) != 0) return -1; return 0; } //插入设备到数据库 int insert_device_item(char*device_id,char*device_name,uint8_t device_addr, char* application_id) { char cmd[MAX_TXET_LEN]; sprintf(cmd,"insert into device_db(device_id,device_name,device_addr,application_id) values('%s','%s',%d,'%s');", device_id,device_name,device_addr,application_id); if(do_cmd_str(cmd)!=0) return -1; return 0; } //更新设备到数据库 int update_device_by_device_id(char*device_id,char*device_name,uint8_t device_addr,char *application_id) { char cmd[MAX_TXET_LEN]; sprintf(cmd,"update device_db set device_id = '%s',device_name = '%s', device_addr = %d, application_id = '%s' where device_id = '%s';", device_id,device_name,device_addr,application_id,device_id); if(do_cmd_str(cmd)!=0) return -1; return 0; } //删除设备通过设备id int delete_device_by_device_id( char*device_id ) { char cmd[MAX_TXET_LEN]; sprintf(cmd,"delete from device_db where device_id = '%s';", device_id); if(do_cmd_str(cmd)!=0) return -1; return 0; } int update_attrtab_item_by_device_id(char*device_id, char*attr_id, char*attr_value) { char cmd[MAX_TXET_LEN]; int rc,nRow,nColumn,i=0; sqlite3* db; char **result=NULL, *errmsg = NULL; rc = sqlite3_open(SQL_NAME, &db); if ( rc != SQLITE_OK ) { printf("ERROR:open sqlite %s \r\n",sqlite3_errmsg(db)); sqlite3_close(db); return -1; } sprintf(cmd,"select * from device_db limit 0;"); rc = sqlite3_get_table(db,cmd,&result,&nRow,&nColumn,&errmsg); if (rc != SQLITE_OK) { printf("ERROR: get table %s \r\n", errmsg); sqlite3_close(db); return -1; } for(i=0; i= date(logtime);"); if(do_cmd_str(cmd)!=0) return -1; return 0; } //用户写日志 int log_write(char*type,char*level,char *log) { insert_tab_item(type,level,log); } //用户读日志 void log_read(struct json_object *root) { get_tab_item(root); } #endif #if 0 int main(void) { uint16_t buffer16; uint8_t tmp[5]; uint16_t attr_value; uint8_t j=0; uint8_t device_id[17]; init_device_db(); //insert_device_item("0102030405060708","test0",1, "lora"); //insert_device_item("0102030405060709","test1",2, "lora"); //insert_device_item("010203040506070a","test2",3, "lora"); update_tab_item_by_device_id("0102030405060709","0000", "0"); update_tab_item_by_device_id("0102030405060709","0001", "1"); update_tab_item_by_device_id("0102030405060709","0002", "2"); update_tab_item_by_device_id("0102030405060709","0003", "3"); update_tab_item_by_device_addr(2, "0000", "8"); update_tab_item_by_device_addr(2, "0001", "8"); update_tab_item_by_device_addr(2, "0002", "8"); update_tab_item_by_device_addr(2, "0003", "8"); update_tab_item_by_device_addr(3, "0000", "8"); update_tab_item_by_device_addr(4, "0000", "8"); select_device_id_by_device_addr(4,device_id); printf("addr:%d ---id:0x%s\r\n",4,device_id); select_device_id_by_device_addr(2,device_id); printf("addr:%d ---id:0x%s\r\n",2,device_id); for(j=1; j<4; j++) { sprintf(tmp, "%04x",j); tmp[4]='\0'; printf("%s----",tmp); printf("nrow=%d\r\n",select_attr_by_device_addr(&attr_value, 2, tmp)); printf("maddr:%d, attrid:%s, buffer16:%d \r\n",2, tmp, attr_value); } for(j=1; j<4; j++) { sprintf(tmp, "%04x",j); tmp[4]='\0'; printf("%s----",tmp); printf("nrow=%d\r\n",select_attr_by_device_addr(&attr_value, 3, tmp)); printf("maddr:%d, attrid:%s, buffer16:%d \r\n",3, tmp, attr_value); } } #endif