|
|
@@ -4,18 +4,17 @@
|
|
|
#include <unistd.h>
|
|
|
#include <string.h>
|
|
|
#include <limits.h>
|
|
|
-#include <rtdevice.h>
|
|
|
+#include "fs.h"
|
|
|
#include "log.h"
|
|
|
#include "sys.h"
|
|
|
#include "lock.h"
|
|
|
#include "paras.h"
|
|
|
#include "cfg.h"
|
|
|
#include "fs.h"
|
|
|
+#include "ui.h"
|
|
|
#include "thread.h"
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
int sys_reboot(void)
|
|
|
{
|
|
|
@@ -31,9 +30,6 @@ int sys_reboot(void)
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
int sys_get_chip_id(int *id)
|
|
|
{
|
|
|
if(!id) {
|
|
|
@@ -45,48 +41,142 @@ int sys_get_chip_id(int *id)
|
|
|
}
|
|
|
|
|
|
|
|
|
-static void* poll_thread(void *arg)
|
|
|
+int sys_get_bldtime(char *buf, int len)
|
|
|
{
|
|
|
- thread_handle_t *h=(thread_handle_t*)arg;
|
|
|
-
|
|
|
- //wdog_init();
|
|
|
- //tmp_create();
|
|
|
- while(h->quit==0) {
|
|
|
- sleep(1);
|
|
|
+ char mon[10]={0};
|
|
|
+ datetime_t dt;
|
|
|
+ char *mon2[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
|
|
|
+
|
|
|
+ sscanf(__DATE__, "%s %hhu %hu", mon,&dt.day,&dt.year);
|
|
|
+ sscanf(__TIME__, "%hhu:%hhu:%hhu", &dt.hour,&dt.min,&dt.sec);
|
|
|
+ for(int i=0;i<12;i++) {
|
|
|
+ if(strcmp(mon, mon2[i])==0) {
|
|
|
+ dt.mon = i+1; break;
|
|
|
+ }
|
|
|
}
|
|
|
- pthread_exit(NULL);
|
|
|
+ return snprintf(buf,len,"%04hu/%02hhu/%02hhu %02hhu:%02hhu:%02hhu",dt.year,dt.mon,dt.day,dt.hour,dt.min,dt.sec);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-static int sd_mount(void)
|
|
|
+static char *str_get(char *buf, char *tok, char *dst, int dstlen)
|
|
|
{
|
|
|
- int r=1,n=0;
|
|
|
- while(n<10) {
|
|
|
- r = mmcsd_wait_cd_changed(500);
|
|
|
- if(r==MMCSD_HOST_PLUGED) {
|
|
|
- r = fs_mount("sd", 1);
|
|
|
+ int n=0;
|
|
|
+ char *t=dst,*p=strstr(buf,tok);
|
|
|
+ if(!p) {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ while((*p)!=':') {
|
|
|
+ if((*p)=='\r' || (*p)=='\n') {
|
|
|
+ return NULL;
|
|
|
}
|
|
|
- else if(r==MMCSD_HOST_UNPLUGED) {
|
|
|
- r = fs_mount("sd", 0);
|
|
|
+ p++;
|
|
|
+ }
|
|
|
+ p++;
|
|
|
+
|
|
|
+ while((*p)!='"') {
|
|
|
+ if((*p)=='\r' || (*p)=='\n') {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ p++;
|
|
|
+ }
|
|
|
+ p++;
|
|
|
+
|
|
|
+ while((*p)!='"') {
|
|
|
+ if((*p)=='\r' || (*p)=='\n') {
|
|
|
+ return NULL;
|
|
|
}
|
|
|
-
|
|
|
- if(r<=0) break;
|
|
|
+
|
|
|
+ *dst++ = *p++;
|
|
|
n++;
|
|
|
+ if(n>=dstlen-1) {
|
|
|
+ LOGE("str_get %s, dst buf length %d is too small!\n", tok, dstlen);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
}
|
|
|
- return r;
|
|
|
+ *dst = 0;
|
|
|
+
|
|
|
+ return t;
|
|
|
}
|
|
|
-static void mk_dir(void)
|
|
|
+int sys_get_prod(char *path, paras_data_t *info)
|
|
|
{
|
|
|
- fs_mkdir("/cfg");
|
|
|
+ int r;
|
|
|
+ char *p,*tok;
|
|
|
+ buf_t fbuf;
|
|
|
+
|
|
|
+ r = fs_load(path, &fbuf);
|
|
|
+ if(r) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ tok = "product_name";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.pname, sizeof(info->prod.pname));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "product_sn";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.pnumber, sizeof(info->prod.pnumber));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+#if 0
|
|
|
+ tok = "device_name";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.name, sizeof(info->prod.name));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+#endif
|
|
|
+
|
|
|
+ tok = "device_no";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.number, sizeof(info->prod.number));
|
|
|
+ if (p)
|
|
|
+ LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "device_date";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.date, sizeof(info->prod.date));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "device_batch";
|
|
|
+ p = str_get(fbuf.buf, tok, info->prod.batch, sizeof(info->prod.batch));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "service_name";
|
|
|
+ p = str_get(fbuf.buf, tok, info->serv.name, sizeof(info->serv.name));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "service_site";
|
|
|
+ p = str_get(fbuf.buf, tok, info->serv.site, sizeof(info->serv.site));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "service_mail";
|
|
|
+ p = str_get(fbuf.buf, tok, info->serv.mail, sizeof(info->serv.mail));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "service_address";
|
|
|
+ p = str_get(fbuf.buf, tok, info->serv.addr, sizeof(info->serv.addr));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ tok = "service_telephone";
|
|
|
+ p = str_get(fbuf.buf, tok, info->serv.tele, sizeof(info->serv.tele));
|
|
|
+ if(p) LOGD("___%s:%s\n", tok, p);
|
|
|
+
|
|
|
+ free(fbuf.buf);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+static void* poll_thread(void *arg)
|
|
|
+{
|
|
|
+ thread_handle_t *h=(thread_handle_t*)arg;
|
|
|
+
|
|
|
+ //wdog_init();
|
|
|
+ //tmp_create();
|
|
|
+ while(h->quit==0) {
|
|
|
+ sleep(1);
|
|
|
+ }
|
|
|
+ pthread_exit(NULL);
|
|
|
}
|
|
|
|
|
|
|
|
|
int sys_init(void)
|
|
|
{
|
|
|
- sd_mount();
|
|
|
- mk_dir();
|
|
|
+ fs_init();
|
|
|
paras_init();
|
|
|
+ ui_init();
|
|
|
|
|
|
//thread_start(THREAD_ID_POLL, poll_thread, NULL);
|
|
|
|