paras.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. #include "paras.h"
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include "sys.h"
  5. //#define LOG log_print
  6. #define LOG printf
  7. AllParasInfo allParas;
  8. ////////////////////////////////////////////////////////////
  9. static int file_length(char* path)
  10. {
  11. int r;
  12. struct stat st;
  13. r = stat(path, &st);
  14. if (r) {
  15. return -1;
  16. }
  17. return st.st_size;
  18. }
  19. static int file_save(char *path, void *buf, int len)
  20. {
  21. int r;
  22. FILE *fp;
  23. fp = fopen(path, "wb");
  24. if(!fp) {
  25. LOG("file_save, fopen %s failed, %d, %d\n", path);
  26. return -1;
  27. }
  28. r = fwrite(buf, 1, len, fp);
  29. if(r!=len) {
  30. LOG("file_save %s failed, %d, %d\n", path, r, len);
  31. r = -1;
  32. }
  33. else {
  34. r = 0;
  35. }
  36. fclose(fp);
  37. return r;
  38. }
  39. static int file_load(char* path, void* buf, int len)
  40. {
  41. int r;
  42. FILE* fp;
  43. fp = fopen(path, "rb");
  44. if (!fp) {
  45. LOG("file_load, fopen %s failed, %d, %d\n", path);
  46. return -1;
  47. }
  48. r = fread(buf, 1, len, fp);
  49. if (r != len) {
  50. LOG("file_load %s failed, %d, %d\n", path, r, len);
  51. r = -1;
  52. }
  53. else {
  54. r = 0;
  55. }
  56. fclose(fp);
  57. return r;
  58. }
  59. static int file_remove(char *path)
  60. {
  61. return remove(path);
  62. }
  63. static int do_check(AllParasInfo *paras)
  64. {
  65. int i,j;
  66. return 0;
  67. }
  68. ///////////////////////////////////////////////////////
  69. int paras_load(void)
  70. {
  71. int i,r=-1;
  72. int flen,rlen;
  73. char path[PATH_MAX];
  74. NetworkInfo_t *p=&allParas.dev._network_info;
  75. allParas = DFLT_PARAS;
  76. sys_get_path(path, PARAS_FILE);
  77. #if 1
  78. flen = file_length(path);
  79. if(flen==sizeof(allParas)) {
  80. rlen = file_load(path, &allParas, flen);
  81. if(rlen==flen) {
  82. r = do_check(&allParas);
  83. if(r) {
  84. allParas = DFLT_PARAS;
  85. }
  86. }
  87. }
  88. #endif
  89. if(r) {
  90. paras_save();
  91. //sys_set_net(p, IP_V4);
  92. }
  93. else {
  94. sys_get_net(p, IP_V4);
  95. }
  96. return r;
  97. }
  98. int paras_save(void)
  99. {
  100. int r,flen;
  101. char path[PATH_MAX];
  102. AllParasInfo *p;
  103. r = do_check(&allParas);
  104. if(r) {
  105. return -1;
  106. }
  107. sys_get_path(path, PARAS_FILE);
  108. flen = file_length(path);
  109. if(flen==sizeof(allParas)) {
  110. p = malloc(sizeof(allParas));
  111. if(p) {
  112. file_load(path, p, flen);
  113. if(memcmp(p, &allParas, sizeof(allParas))==0) {
  114. free(p); return -1;
  115. }
  116. free(p);
  117. }
  118. }
  119. return file_save(path, &allParas, sizeof(allParas));
  120. }
  121. int paras_reset(void)
  122. {
  123. allParas = DFLT_PARAS;
  124. return paras_save();
  125. }
  126. AllParasInfo* paras_get(void)
  127. {
  128. return &allParas;
  129. }
  130. int paras_power_set(int saddr, GlobalPowerManger *pm)
  131. {
  132. int i,j;
  133. RelayPowerInfo *rp=&allParas.relay.ch[saddr];
  134. if(pm) rp->pwr[pm->product_ch_id] = *pm;
  135. rp->inited = 1;
  136. return 0;
  137. }
  138. int paras_power_get(int addr, int saddr, GlobalPowerManger *pm)
  139. {
  140. int i,j;
  141. RelayPowerInfo *rp=&allParas.relay.ch[saddr];
  142. if(rp->inited==0) {
  143. return -1;
  144. }
  145. if(pm) rp->pwr[saddr] = *pm;
  146. return 0;
  147. }