Guest User

Untitled

a guest
May 13th, 2022
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.78 KB | None | 0 0
  1. const gxObject* ALL_OBJECTS[] = { &association.base, &ldn.base, &activePowerL1.base, &clock1.base};
  2.  
  3. int addClockObject()
  4. {
  5.     int ret;
  6.     const unsigned char ln[6] = { 0,0,1,0,0,255 };
  7.     if ((ret = cosem_init2(&clock1.base, DLMS_OBJECT_TYPE_CLOCK, ln)) != 0)
  8.     {
  9.         return ret;
  10.     }
  11.     time_init3(&clock1.begin, -1, 9, 1, -1, -1, -1, -1);
  12.     time_init3(&clock1.end, -1, 3, 1, -1, -1, -1, -1);
  13.     return 0;
  14. }
  15.  
  16. int svr_InitObjects(
  17. dlmsServerSettings *settings)
  18. {
  19.     addLogicalDeviceName();
  20.     addClockObject();
  21.     addRegisterObject();
  22.     addAssociation();
  23.     oa_attach(&settings->base.objects, ALL_OBJECTS,
  24.             sizeof(ALL_OBJECTS) / sizeof(ALL_OBJECTS[0]));
  25.     return 0;
  26. }
  27.  
  28. #define SETTINGS_BUFFER_SIZE 2000
  29. #define LOAD_PROFILE_BUFFER_SIZE 1000
  30. #define EVENT_PROFILE_BUFFER_SIZE 1000
  31.  
  32. unsigned char SETTINGS_BUFFER[SETTINGS_BUFFER_SIZE + LOAD_PROFILE_BUFFER_SIZE + EVENT_PROFILE_BUFFER_SIZE];
  33.  
  34. uint32_t SERIALIZER_SIZE(){
  35.     // As stated in the example, must investigate if it's wrong
  36.     return SETTINGS_BUFFER_SIZE;
  37. }
  38.  
  39. int SERIALIZER_LOAD(uint32_t index, uint32_t count, void* value){
  40.     if (index + count > sizeof(SETTINGS_BUFFER))
  41.     {
  42.         return DLMS_ERROR_CODE_SERIALIZATION_LOAD_FAILURE;
  43.     }
  44.     unsigned char* p = (unsigned char*)value;
  45.     uint32_t pos;
  46.     for (pos = 0; pos != count; ++pos)
  47.     {
  48.         *p = SETTINGS_BUFFER[index + pos];
  49.         ++p;
  50.     }
  51.     return  0;
  52. }
  53.  
  54. int SERIALIZER_SAVE(uint32_t index, uint32_t count, const void* value){
  55.     if (index + count > sizeof(SETTINGS_BUFFER))
  56.     {
  57.         return DLMS_ERROR_CODE_SERIALIZATION_SAVE_FAILURE;
  58.     }
  59.     unsigned char* p = (unsigned char*)value;
  60.     uint32_t pos;
  61.     for (pos = 0; pos != count; ++pos)
  62.     {
  63.         SETTINGS_BUFFER[index + pos] = *p;
  64.         ++p;
  65.     }
  66.     return  0;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment