| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #include "paras.h"
- #include <stdlib.h>
- #include <stdio.h>
- #include "sys.h"
- //#define LOG log_print
- #define LOG printf
- AllParasInfo allParas;
- ////////////////////////////////////////////////////////////
- static int file_length(char* path)
- {
- int r;
- struct stat st;
- r = stat(path, &st);
- if (r) {
- return -1;
- }
- return st.st_size;
- }
- static int file_save(char *path, void *buf, int len)
- {
- int r;
- FILE *fp;
-
- fp = fopen(path, "wb");
- if(!fp) {
- LOG("file_save, fopen %s failed, %d, %d\n", path);
- return -1;
- }
- r = fwrite(buf, 1, len, fp);
- if(r!=len) {
- LOG("file_save %s failed, %d, %d\n", path, r, len);
- r = -1;
- }
- else {
- r = 0;
- }
- fclose(fp);
- return r;
- }
- static int file_load(char* path, void* buf, int len)
- {
- int r;
- FILE* fp;
- fp = fopen(path, "rb");
- if (!fp) {
- LOG("file_load, fopen %s failed, %d, %d\n", path);
- return -1;
- }
- r = fread(buf, 1, len, fp);
- if (r != len) {
- LOG("file_load %s failed, %d, %d\n", path, r, len);
- r = -1;
- }
- else {
- r = 0;
- }
- fclose(fp);
- return r;
- }
- static int file_remove(char *path)
- {
- return remove(path);
- }
- static int do_check(AllParasInfo *paras)
- {
- int i,j;
-
- return 0;
- }
- ///////////////////////////////////////////////////////
- int paras_load(void)
- {
- int i,r=-1;
- int flen,rlen;
- char path[PATH_MAX];
- NetworkInfo_t *p=&allParas.dev._network_info;
- allParas = DFLT_PARAS;
- sys_get_path(path, PARAS_FILE);
- #if 1
- flen = file_length(path);
- if(flen==sizeof(allParas)) {
- rlen = file_load(path, &allParas, flen);
- if(rlen==flen) {
- r = do_check(&allParas);
- if(r) {
- allParas = DFLT_PARAS;
- }
- }
- }
- #endif
- if(r) {
- paras_save();
- //sys_set_net(p, IP_V4);
- }
- else {
- sys_get_net(p, IP_V4);
- }
-
- return r;
- }
- int paras_save(void)
- {
- int r,flen;
- char path[PATH_MAX];
- AllParasInfo *p;
-
- r = do_check(&allParas);
- if(r) {
- return -1;
- }
- sys_get_path(path, PARAS_FILE);
- flen = file_length(path);
- if(flen==sizeof(allParas)) {
- p = malloc(sizeof(allParas));
- if(p) {
- file_load(path, p, flen);
- if(memcmp(p, &allParas, sizeof(allParas))==0) {
- free(p); return -1;
- }
- free(p);
- }
- }
-
- return file_save(path, &allParas, sizeof(allParas));
- }
- int paras_reset(void)
- {
- allParas = DFLT_PARAS;
- return paras_save();
- }
- AllParasInfo* paras_get(void)
- {
- return &allParas;
- }
- int paras_power_set(int saddr, GlobalPowerManger *pm)
- {
- int i,j;
- RelayPowerInfo *rp=&allParas.relay.ch[saddr];
- if(pm) rp->pwr[pm->product_ch_id] = *pm;
- rp->inited = 1;
- return 0;
- }
- int paras_power_get(int addr, int saddr, GlobalPowerManger *pm)
- {
- int i,j;
- RelayPowerInfo *rp=&allParas.relay.ch[saddr];
- if(rp->inited==0) {
- return -1;
- }
- if(pm) rp->pwr[saddr] = *pm;
- return 0;
- }
|