54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import sysv_ipc #pip install sysv-ipc
|
|
import pycstruct #pip install pycstruct
|
|
|
|
|
|
str_buffer_size = 64
|
|
msg_queue_key = 0x1B11193C0
|
|
|
|
try:
|
|
mq = sysv_ipc.MessageQueue(msg_queue_key, sysv_ipc.IPC_CREAT)
|
|
|
|
while True:
|
|
message, mtype = mq.receive()
|
|
print("")
|
|
#print("*** New message received ***")
|
|
# print(f"Raw message: {message}")
|
|
|
|
#uint8_t u8DriveIndex;
|
|
#uint32_t u32DriveHours;
|
|
#uint32_t u32DriveCycles;
|
|
#uint32_t u32DriveError;
|
|
#uint64_t u64DriveShredTimestamp;
|
|
#uint64_t u64DriveShredDuration;
|
|
#uint64_t u64DriveCapacity;
|
|
#char caDriveState[STR_BUFFER_SIZE];
|
|
#char caDriveModelFamiliy[STR_BUFFER_SIZE];
|
|
#char caDriveModelName[STR_BUFFER_SIZE];
|
|
#char caDriveSerialnumber[STR_BUFFER_SIZE];
|
|
|
|
|
|
driveData = pycstruct.StructDef()
|
|
driveData.add('utf-8', 'driveIndex', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveHours', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveCycles', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveErrors', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveShredTimestamp', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveShredDuration', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveCapacity', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveState', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveModelFamiliy', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveModelModel', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveSerialnumber', length=str_buffer_size)
|
|
driveData.add('utf-8', 'driveReHddVersion', length=str_buffer_size)
|
|
|
|
# Dictionary representation
|
|
result = driveData.deserialize(message)
|
|
print('Dictionary object:')
|
|
print(str(result))
|
|
|
|
|
|
except sysv_ipc.ExistentialError:
|
|
print("ERROR: message queue creation failed")
|
|
|
|
|