|
@@ -40,6 +40,9 @@
|
|
|
#define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0]))
|
|
|
#define PASS 1
|
|
|
#define FAIL -1
|
|
|
+
|
|
|
+#define MtdBlockSize 0x600000
|
|
|
+
|
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
|
|
|
@@ -241,55 +244,68 @@ int InitShareMemory() {
|
|
|
|
|
|
int StoreUsrConfigData(struct SysConfigData *UsrData)
|
|
|
{
|
|
|
+ int result = PASS;
|
|
|
int fd,wrd;
|
|
|
unsigned int i,Chk;
|
|
|
- unsigned char *ptr;
|
|
|
+ unsigned char *ptr, *BufTmp;
|
|
|
|
|
|
Chk=0;
|
|
|
ptr=(unsigned char *)UsrData;
|
|
|
- for(i=0;i<sizeof(struct SysConfigData)-4;i++)
|
|
|
+ if((BufTmp=malloc(MtdBlockSize))!=NULL)
|
|
|
{
|
|
|
- Chk+=*(ptr+i);
|
|
|
- }
|
|
|
- UsrData->Checksum=Chk;
|
|
|
+ memset(BufTmp,0,MtdBlockSize);
|
|
|
+ memcpy(BufTmp,ptr,sizeof(struct SysConfigData));
|
|
|
+ for(i=0;i<MtdBlockSize-4;i++)
|
|
|
+ Chk+=*(ptr+i);
|
|
|
+ memcpy( BufTmp+MtdBlockSize-4,&Chk,4);
|
|
|
+ fd = open("/dev/mtdblock10", O_RDWR);
|
|
|
+ if (fd > 0)
|
|
|
+ {
|
|
|
+ wrd=write(fd, BufTmp, MtdBlockSize);
|
|
|
+ close(fd);
|
|
|
+ if(wrd>=MtdBlockSize)
|
|
|
+ {
|
|
|
+ fd = open("/dev/mtdblock11", O_RDWR);
|
|
|
+ if (fd > 0)
|
|
|
+ {
|
|
|
+ wrd=write(fd, BufTmp, MtdBlockSize);
|
|
|
+ close(fd);
|
|
|
+ if(wrd<MtdBlockSize)
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("write /dev/mtdblock11(backup) NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("open /dev/mtdblock11(backup) NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("write /dev/mtdblock10 NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
|
|
|
- fd = open("/dev/mtdblock10", O_RDWR);
|
|
|
- if (fd < 0)
|
|
|
- {
|
|
|
- #ifdef SystemLogMessage
|
|
|
- StoreLogMsg("[WebService]StoreUsrConfigData: open /dev/mtdblock10 NG");
|
|
|
- #endif
|
|
|
- return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_ERROR("open /dev/mtdblock10 NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
}
|
|
|
- wrd=write(fd, UsrData, sizeof(struct SysConfigData));
|
|
|
- close(fd);
|
|
|
- if(wrd!=(sizeof(struct SysConfigData)))
|
|
|
+ else
|
|
|
{
|
|
|
- #ifdef SystemLogMessage
|
|
|
- StoreLogMsg("[WebService]StoreUsrConfigData: write /dev/mtdblock10 NG");
|
|
|
- #endif
|
|
|
- return 0;
|
|
|
+ DEBUG_ERROR("alloc BlockSize NG\r\n");
|
|
|
+ result = FAIL;
|
|
|
}
|
|
|
+ if(BufTmp!=NULL)
|
|
|
+ free(BufTmp);
|
|
|
|
|
|
- fd = open("/dev/mtdblock11", O_RDWR);
|
|
|
- if (fd < 0)
|
|
|
- {
|
|
|
- #ifdef SystemLogMessage
|
|
|
- StoreLogMsg("[WebService]StoreUsrConfigData: open /dev/mtdblock11(backup) NG");
|
|
|
- #endif
|
|
|
- return 0;
|
|
|
- }
|
|
|
- wrd=write(fd, UsrData, sizeof(struct SysConfigData));
|
|
|
- close(fd);
|
|
|
- if(wrd!=(sizeof(struct SysConfigData)))
|
|
|
- {
|
|
|
- #ifdef SystemLogMessage
|
|
|
- StoreLogMsg("[WebService]StoreUsrConfigData: write /dev/mtdblock11(backup) NG");
|
|
|
- #endif
|
|
|
- return 0;
|
|
|
- }
|
|
|
- return 1;
|
|
|
+ return result;
|
|
|
}
|
|
|
+
|
|
|
//================================================
|
|
|
// Main process
|
|
|
//================================================
|