sysinfo.c 672 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "amt630h.h"
  2. #include "sysinfo.h"
  3. #include "crc32.h"
  4. extern int SpiReadSysInfo(SysInfo *info);
  5. extern void SpiWriteSysInfo(SysInfo *info);
  6. static SysInfo sysinfo = {0};
  7. SysInfo *GetSysInfo(void)
  8. {
  9. return &sysinfo;
  10. }
  11. void SetDefaultSysInfo(void)
  12. {
  13. sysinfo.update_media_type = UPDATE_MEDIA_SD;
  14. sysinfo.update_status = UPDATE_STATUS_START;
  15. sysinfo.stepldr_offset = STEPLDRB_OFFSET;
  16. sysinfo.stepldr_size = STEPLDR_MAX_SIZE;
  17. }
  18. int ReadSysInfo(void)
  19. {
  20. return SpiReadSysInfo(&sysinfo);
  21. }
  22. void SaveSysInfo(SysInfo *info)
  23. {
  24. if (!info)
  25. info = &sysinfo;
  26. info->checksum = xcrc32((unsigned char*)info, sizeof(SysInfo) - 4, 0xffffffff);
  27. SpiWriteSysInfo(info);
  28. }