|
@@ -21,33 +21,29 @@ void SubscriptionManager_init(UA_Session *session) {
|
|
// Counter
|
|
// Counter
|
|
// NOTE: On a 32 bit plattform, assigning 64 bit (2 regs) is allowed by the compiler, but shifting though multiple
|
|
// NOTE: On a 32 bit plattform, assigning 64 bit (2 regs) is allowed by the compiler, but shifting though multiple
|
|
// regs is usually not. To support both 32 and 64bit, the struct splits the 64Bit timestamp into two parts.
|
|
// regs is usually not. To support both 32 and 64bit, the struct splits the 64Bit timestamp into two parts.
|
|
- union {
|
|
|
|
|
|
+ typedef union {
|
|
struct {
|
|
struct {
|
|
UA_UInt32 ui32h;
|
|
UA_UInt32 ui32h;
|
|
UA_UInt32 ui32l;
|
|
UA_UInt32 ui32l;
|
|
- };
|
|
|
|
|
|
+ } individual;
|
|
UA_UInt64 ui64;
|
|
UA_UInt64 ui64;
|
|
- } guidInitH;
|
|
|
|
|
|
+ } guidInit;
|
|
|
|
+ guidInit guidInitH;
|
|
guidInitH.ui64 = (UA_UInt64) UA_DateTime_now();
|
|
guidInitH.ui64 = (UA_UInt64) UA_DateTime_now();
|
|
- manager->lastJobGuid.data1 = guidInitH.ui32h;
|
|
|
|
- manager->lastJobGuid.data2 = (UA_UInt16) (guidInitH.ui32l >> 16);
|
|
|
|
- manager->lastJobGuid.data3 = (UA_UInt16) (guidInitH.ui32l);
|
|
|
|
- union {
|
|
|
|
- struct {
|
|
|
|
- UA_UInt32 ui32h;
|
|
|
|
- UA_UInt32 ui32l;
|
|
|
|
- };
|
|
|
|
- UA_UInt64 ui64;
|
|
|
|
- } guidInitL;
|
|
|
|
|
|
+ manager->lastJobGuid.data1 = guidInitH.individual.ui32h;
|
|
|
|
+ manager->lastJobGuid.data2 = (UA_UInt16) (guidInitH.individual.ui32l >> 16);
|
|
|
|
+ manager->lastJobGuid.data3 = (UA_UInt16) (guidInitH.individual.ui32l);
|
|
|
|
+
|
|
|
|
+ guidInit guidInitL;
|
|
guidInitL.ui64 = (UA_UInt64) UA_DateTime_now();
|
|
guidInitL.ui64 = (UA_UInt64) UA_DateTime_now();
|
|
- manager->lastJobGuid.data4[0] = (UA_Byte) guidInitL.ui32l;
|
|
|
|
- manager->lastJobGuid.data4[1] = (UA_Byte) (guidInitL.ui32l >> 8);
|
|
|
|
- manager->lastJobGuid.data4[2] = (UA_Byte) (guidInitL.ui32l >> 16);
|
|
|
|
- manager->lastJobGuid.data4[3] = (UA_Byte) (guidInitL.ui32l >> 24);
|
|
|
|
- manager->lastJobGuid.data4[4] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.ui32h);
|
|
|
|
- manager->lastJobGuid.data4[5] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.ui32h >> 8);
|
|
|
|
- manager->lastJobGuid.data4[6] = (UA_Byte) (manager->lastJobGuid.data4[1]) ^ (guidInitL.ui32h >> 16);
|
|
|
|
- manager->lastJobGuid.data4[7] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.ui32h >> 24);
|
|
|
|
|
|
+ manager->lastJobGuid.data4[0] = (UA_Byte) guidInitL.individual.ui32l;
|
|
|
|
+ manager->lastJobGuid.data4[1] = (UA_Byte) (guidInitL.individual.ui32l >> 8);
|
|
|
|
+ manager->lastJobGuid.data4[2] = (UA_Byte) (guidInitL.individual.ui32l >> 16);
|
|
|
|
+ manager->lastJobGuid.data4[3] = (UA_Byte) (guidInitL.individual.ui32l >> 24);
|
|
|
|
+ manager->lastJobGuid.data4[4] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.individual.ui32h);
|
|
|
|
+ manager->lastJobGuid.data4[5] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.individual.ui32h >> 8);
|
|
|
|
+ manager->lastJobGuid.data4[6] = (UA_Byte) (manager->lastJobGuid.data4[1]) ^ (guidInitL.individual.ui32h >> 16);
|
|
|
|
+ manager->lastJobGuid.data4[7] = (UA_Byte) (manager->lastJobGuid.data4[0]) ^ (guidInitL.individual.ui32h >> 24);
|
|
}
|
|
}
|
|
|
|
|
|
void SubscriptionManager_deleteMembers(UA_Session *session, UA_Server *server) {
|
|
void SubscriptionManager_deleteMembers(UA_Session *session, UA_Server *server) {
|