2 from datetime
import datetime
11 device_version_array = device_c_api_version.split(
".")
12 support_version_array = support_c_api_version.split(
".")
13 if len(support_version_array) != 3:
14 return "support_c_api_version error" 15 if len(device_version_array) != 3:
16 return "device_c_api_version error" 18 version_fail = device_c_api_version +
">" + support_c_api_version
20 if device_version_array == support_version_array:
24 if device_version_array[i] < support_version_array[i]:
37 "wrong slot settings",
42 return repr(error[self.
value])
47 super(ioThinx_4530_API, self).
__init__()
57 raise AssertionError(error)
60 self.
lib = ctypes.cdll.LoadLibrary(shared_library)
66 return(str(
".".join(file.split(
".")[2:5])))
74 p_status = ctypes.c_uint8()
90 p_values = ctypes.c_uint32()
92 ctypes.byref(p_values))
95 values = [int(b)
for b
in bin(p_values.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
99 buff = (ctypes.c_uint32 * count)()
101 ctypes.c_uint8(start),
102 ctypes.c_uint8(count),
108 buff_list.append(value)
112 buff = (ctypes.c_uint32 * count)(*buff_list)
114 ctypes.c_uint8(start),
115 ctypes.c_uint8(count),
121 p_starts = ctypes.c_uint32()
123 ctypes.byref(p_starts))
126 starts = [int(b)
for b
in bin(p_starts.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
130 starts = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
132 ctypes.c_uint32(starts))
137 starts = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
139 ctypes.c_uint32(starts))
144 p_overflows = ctypes.c_uint32()
146 ctypes.byref(p_overflows))
149 overflows = [int(b)
for b
in bin(p_overflows.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
153 overflows = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
155 ctypes.c_uint32(overflows))
160 buff = (ctypes.c_uint8 * count)()
162 ctypes.c_uint8(start),
163 ctypes.c_uint8(count),
169 buff_list.append(value)
173 buff = (ctypes.c_uint8 * count)(*buff_list)
175 ctypes.c_uint8(start),
176 ctypes.c_uint8(count),
182 buff = (ctypes.c_uint16 * count)()
184 ctypes.c_uint8(start),
185 ctypes.c_uint8(count),
191 buff_list.append(value)
195 buff = (ctypes.c_uint16 * count)(*buff_list)
197 ctypes.c_uint8(start),
198 ctypes.c_uint8(count),
204 buff = (ctypes.c_uint8 * count)()
206 ctypes.c_uint8(start),
207 ctypes.c_uint8(count),
213 buff_list.append(value)
217 buff = (ctypes.c_uint8 * count)(*buff_list)
219 ctypes.c_uint8(start),
220 ctypes.c_uint8(count),
226 buff = (ctypes.c_uint32 * count)()
228 ctypes.c_uint8(start),
229 ctypes.c_uint8(count),
235 buff_list.append(value)
239 buff = (ctypes.c_uint32 * count)(*buff_list)
241 ctypes.c_uint8(start),
242 ctypes.c_uint8(count),
251 p_values = ctypes.c_uint32()
253 ctypes.byref(p_values))
256 values = [int(b)
for b
in bin(p_values.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
260 values = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
262 ctypes.c_uint32(values))
267 buff = (ctypes.c_uint32 * count)()
269 ctypes.c_uint8(start),
270 ctypes.c_uint8(count),
276 buff_list.append(value)
280 buff = (ctypes.c_uint32 * count)(*buff_list)
282 ctypes.c_uint8(start),
283 ctypes.c_uint8(count),
289 p_starts = ctypes.c_uint32()
291 ctypes.byref(p_starts))
294 starts = [int(b)
for b
in bin(p_starts.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
298 starts = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
300 ctypes.c_uint32(starts))
305 stops = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
307 ctypes.c_uint32(stops))
312 frequencies_buff = (ctypes.c_uint16 * count)()
313 duty_cycles_buff = (ctypes.c_uint16 * count)()
315 ctypes.c_uint8(start),
316 ctypes.c_uint8(count),
317 ctypes.byref(frequencies_buff),
318 ctypes.byref(duty_cycles_buff))
322 frequencies_buff_list = []
323 for value
in frequencies_buff:
324 frequencies_buff_list.append(value)
325 duty_cycles_buff_list = []
326 for value
in duty_cycles_buff:
327 duty_cycles_buff_list.append(value)
328 return frequencies_buff_list, duty_cycles_buff_list
331 frequencies_buff_list,
332 duty_cycles_buff_list):
333 frequencies_buff = (ctypes.c_uint16 * count)(*frequencies_buff_list)
334 duty_cycles_buff = (ctypes.c_uint16 * count)(*duty_cycles_buff_list)
336 ctypes.c_uint8(start),
337 ctypes.c_uint8(count),
338 ctypes.byref(frequencies_buff),
339 ctypes.byref(duty_cycles_buff))
344 buff = (ctypes.c_uint8 * count)()
346 ctypes.c_uint8(start),
347 ctypes.c_uint8(count),
353 buff_list.append(value)
357 buff = (ctypes.c_uint8 * count)(*buff_list)
359 ctypes.c_uint8(start),
360 ctypes.c_uint8(count),
366 buff = (ctypes.c_uint32 * count)()
368 ctypes.c_uint8(start),
369 ctypes.c_uint8(count),
375 buff_list.append(value)
379 buff = (ctypes.c_uint32 * count)(*buff_list)
381 ctypes.c_uint8(start),
382 ctypes.c_uint8(count),
388 frequencies_buff = (ctypes.c_uint16 * count)()
389 duty_cycles_buff = (ctypes.c_uint16 * count)()
391 ctypes.c_uint8(start),
392 ctypes.c_uint8(count),
393 ctypes.byref(frequencies_buff),
394 ctypes.byref(duty_cycles_buff))
398 frequencies_buff_list = []
399 for value
in frequencies_buff:
400 frequencies_buff_list.append(value)
401 duty_cycles_buff_list = []
402 for value
in duty_cycles_buff:
403 duty_cycles_buff_list.append(value)
405 return frequencies_buff_list, duty_cycles_buff_list
408 frequencies_buff_list,
409 duty_cycles_buff_list):
410 frequencies_buff = (ctypes.c_uint16 * count)(*frequencies_buff_list)
411 duty_cycles_buff = (ctypes.c_uint16 * count)(*duty_cycles_buff_list)
413 ctypes.c_uint8(start),
414 ctypes.c_uint8(count),
415 ctypes.byref(frequencies_buff),
416 ctypes.byref(duty_cycles_buff))
421 p_values = ctypes.c_uint32()
423 ctypes.byref(p_values))
426 values = [int(b)
for b
in bin(p_values.value)[2:].zfill(SLOT_CH_NUM)[::-1]]
430 values = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
432 ctypes.c_uint32(values))
437 buff = (ctypes.c_uint32 * count)()
439 ctypes.c_uint8(start),
440 ctypes.c_uint8(count),
446 buff_list.append(value)
450 buff = (ctypes.c_uint32 * count)()
452 ctypes.c_uint8(start),
453 ctypes.c_uint8(count),
459 buff_list.append(value)
463 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
465 ctypes.c_uint32(resets))
470 buff = (ctypes.c_float * count)()
472 ctypes.c_uint8(start),
473 ctypes.c_uint8(count),
479 buff_list.append(value)
483 buff = (ctypes.c_float * count)()
485 ctypes.c_uint8(start),
486 ctypes.c_uint8(count),
492 buff_list.append(value)
496 buff = (ctypes.c_float * count)()
498 ctypes.c_uint8(start),
499 ctypes.c_uint8(count),
505 buff_list.append(value)
509 buff = (ctypes.c_uint32 * count)()
511 ctypes.c_uint8(start),
512 ctypes.c_uint8(count),
518 buff_list.append(value)
522 buff = (ctypes.c_uint32 * count)()
524 ctypes.c_uint8(start),
525 ctypes.c_uint8(count),
531 buff_list.append(value)
535 buff = (ctypes.c_uint32 * count)()
537 ctypes.c_uint8(start),
538 ctypes.c_uint8(count),
544 buff_list.append(value)
548 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
550 ctypes.c_uint32(resets))
555 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
557 ctypes.c_uint32(resets))
562 buff = (ctypes.c_uint8 * count)()
564 ctypes.c_uint8(start),
565 ctypes.c_uint8(count),
571 buff_list.append(value)
575 buff = (ctypes.c_uint8 * count)()
577 ctypes.c_uint8(start),
578 ctypes.c_uint8(count),
584 buff_list.append(value)
588 buff = (ctypes.c_uint8 * count)(*buff_list)
590 ctypes.c_uint8(start),
591 ctypes.c_uint8(count),
597 buff = (ctypes.c_float * count)()
599 ctypes.c_uint8(start),
600 ctypes.c_uint8(count),
606 buff_list.append(value)
610 buff = (ctypes.c_float * count)(*buff_list)
612 ctypes.c_uint8(start),
613 ctypes.c_uint8(count),
619 buff = (ctypes.c_float * count)()
621 ctypes.c_uint8(start),
622 ctypes.c_uint8(count),
628 buff_list.append(value)
632 buff = (ctypes.c_float * count)(*buff_list)
634 ctypes.c_uint8(start),
635 ctypes.c_uint8(count),
641 buff = (ctypes.c_uint16 * count)()
643 ctypes.c_uint8(start),
644 ctypes.c_uint8(count),
650 buff_list.append(value)
654 buff = (ctypes.c_uint16 * count)(*buff_list)
656 ctypes.c_uint8(start),
657 ctypes.c_uint8(count),
663 buff = (ctypes.c_uint8 * count)()
665 ctypes.c_uint8(start),
666 ctypes.c_uint8(count),
672 buff_list.append(value)
676 buff = (ctypes.c_uint8 * count)()
678 ctypes.c_uint8(start),
679 ctypes.c_uint8(count),
685 buff_list.append(value)
689 buff = (ctypes.c_uint8 * count)(*buff_list)
691 ctypes.c_uint8(start),
692 ctypes.c_uint8(count),
698 buff = (ctypes.c_float * count)()
700 ctypes.c_uint8(start),
701 ctypes.c_uint8(count),
707 buff_list.append(value)
711 buff = (ctypes.c_float * count)()
713 ctypes.c_uint8(start),
714 ctypes.c_uint8(count),
720 buff_list.append(value)
724 buff = (ctypes.c_float * count)()
726 ctypes.c_uint8(start),
727 ctypes.c_uint8(count),
733 buff_list.append(value)
737 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
739 ctypes.c_uint32(resets))
744 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
746 ctypes.c_uint32(resets))
751 buff = (ctypes.c_uint8 * count)()
753 ctypes.c_uint8(start),
754 ctypes.c_uint8(count),
760 buff_list.append(value)
764 buff = (ctypes.c_float * count)(*buff_list)
766 ctypes.c_uint8(start),
767 ctypes.c_uint8(count),
774 ctypes.c_uint8(start),
775 ctypes.c_uint8(count))
780 buff = (ctypes.c_uint8 * count)()
782 ctypes.c_uint8(start),
783 ctypes.c_uint8(count),
789 buff_list.append(value)
793 buff = (ctypes.c_uint8 * count)(*buff_list)
795 ctypes.c_uint8(start),
796 ctypes.c_uint8(count),
802 buff = (ctypes.c_float * count)()
804 ctypes.c_uint8(start),
805 ctypes.c_uint8(count),
811 buff_list.append(value)
815 buff = (ctypes.c_float * count)()
817 ctypes.c_uint8(start),
818 ctypes.c_uint8(count),
824 buff_list.append(value)
828 buff = (ctypes.c_float * count)()
830 ctypes.c_uint8(start),
831 ctypes.c_uint8(count),
837 buff_list.append(value)
841 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
843 ctypes.c_uint32(resets))
848 resets = int(
"".join(map(str, buff_list[:: -1])), BIN_TYPE)
850 ctypes.c_uint32(resets))
855 buff = (ctypes.c_uint8 * count)()
857 ctypes.c_uint8(start),
858 ctypes.c_uint8(count),
864 buff_list.append(value)
868 buff = (ctypes.c_float * count)(*buff_list)
870 ctypes.c_uint8(start),
871 ctypes.c_uint8(count),
878 ctypes.c_uint8(start),
879 ctypes.c_uint8(count))
884 buff = (ctypes.c_uint8 * count)()
886 ctypes.c_uint8(start),
887 ctypes.c_uint8(count),
893 buff_list.append(value)
897 buff = (ctypes.c_uint8 * count)(*buff_list)
899 ctypes.c_uint8(start),
900 ctypes.c_uint8(count),
910 buff = (ctypes.c_uint8 * count)()
912 ctypes.c_uint8(start),
913 ctypes.c_uint8(count),
919 buff_list.append(value)
923 buff = (ctypes.c_uint8 * count)()
925 ctypes.c_uint8(start),
926 ctypes.c_uint8(count),
932 buff_list.append(value)
936 buff = (ctypes.c_float * count)()
938 ctypes.c_uint8(start),
939 ctypes.c_uint8(count),
945 buff_list.append(value)
949 buff = (ctypes.c_float * count)(*buff_list)
951 ctypes.c_uint8(start),
952 ctypes.c_uint8(count),
963 _fields_ = [(
'model_name', (ctypes.c_uint8 * 20)),
964 (
'product_id', ctypes.c_uint32),
965 (
'fwr_version', ctypes.c_uint16),
966 (
'fwr_build_date', ctypes.c_uint32),
967 (
'serial_number', (ctypes.c_uint8 * 13))]
971 ctypes.byref(p_module_info))
975 def convert_build_date_from_hex_to_datetime():
976 build_date = hex(p_module_info.fwr_build_date).strip(
'0x').strip(
'L')
977 build_date = [
'{:02d}'.format(int(build_date[i:i + 2], 16))
for i
in range(0, len(build_date), BIN_TYPE)]
978 build_date = datetime.strptime(
"".join(build_date),
'%y%m%d%H')
980 fwr_build_date = convert_build_date_from_hex_to_datetime()
983 'model_name': str(bytearray(p_module_info.model_name).decode().rstrip(
'\x00')),
984 'product_id': hex(p_module_info.product_id).rstrip(
"L"),
985 'fwr_version': hex(p_module_info.fwr_version),
986 'fwr_build_date': fwr_build_date,
987 'serial_number': str(bytearray(p_module_info.serial_number).decode().rstrip(
'\x00')),
993 _fields_ = [(
'model_name', (ctypes.c_uint8 * 20)),
994 (
'product_id', ctypes.c_uint32),
995 (
'fwr_version', ctypes.c_uint16),
996 (
'fwr_build_date', ctypes.c_uint32),
997 (
'serial_number', (ctypes.c_uint8 * 13))]
1001 ctypes.byref(p_module_info))
1005 def convert_build_date_from_hex_to_datetime():
1006 build_date = hex(p_module_info.fwr_build_date).strip(
'0x').strip(
'L')
1007 build_date = [
'{:02d}'.format(int(build_date[i:i + 2], 16))
for i
in range(0, len(build_date), BIN_TYPE)]
1008 build_date = datetime.strptime(
"".join(build_date),
'%y%m%d%H')
1010 fwr_build_date = convert_build_date_from_hex_to_datetime()
1013 'model_name': str(bytearray(p_module_info.model_name).decode().rstrip(
'\x00')),
1014 'product_id': hex(p_module_info.product_id).rstrip(
"L"),
1015 'fwr_version': hex(p_module_info.fwr_version),
1016 'fwr_build_date': fwr_build_date,
1017 'serial_number': str(bytearray(p_module_info.serial_number).decode().rstrip(
'\x00')),
1022 pmodule_count = ctypes.c_uint32()
1026 return pmodule_count.value
1029 pmodule_count = ctypes.c_uint32()
1033 return pmodule_count.value
1036 p_state = ctypes.c_uint8()
1038 ctypes.byref(p_state))
1041 return p_state.value
1045 ctypes.c_uint8(channel),
1046 ctypes.c_uint8(state))
1051 p_state = ctypes.c_uint8()
1053 ctypes.byref(p_state))
1056 return p_state.value
1059 p_state = ctypes.c_uint8()
1061 ctypes.byref(p_state))
1064 return p_state.value
1068 ctypes.c_uint8(state))
1089 buff = (ctypes.c_uint8 * 20)()
1090 p_name = (ctypes.c_uint8 * 20)()
1092 ctypes.c_uint32(slot),
1093 ctypes.c_uint32(port),
1094 ctypes.byref(p_name)
1100 for value
in p_name:
1101 buff_list.append(value)
1103 dev_name = bytes(buff_list).decode(
'ascii')
1108 ctypes.c_uint32(slot),
1109 ctypes.c_uint32(port),
1110 ctypes.c_uint32(mode)
1116 mode = ctypes.c_uint32()
1118 ctypes.c_uint32(slot),
1119 ctypes.c_uint32(port),
def ioThinx_DO_SetPwmCounts(self, slot, start, count, buff_list)
def ioThinx_DO_SetValues(self, slot, buff_list)
def ioThinx_DI_GetCntStarts(self, slot)
def ioThinx_DI_Config_GetCntValues(self, slot, start, count)
def ioThinx_AI_GetMaxRaws(self, slot, start, count)
def ioThinx_Misc_SetUserLedState(self, slot, channel, state)
def ioThinx_Serial_SetInterface(self, slot, port, mode)
def ioThinx_PWR_Config_GetAlarms(self, slot, start, count)
def ioThinx_RTD_ResetMaxs(self, slot, buff_list)
def ioThinx_Misc_GetModuleInfo(self, slot)
def ioThinx_AO_GetRaws(self, slot, start, count)
def ioThinx_DI_Config_SetFilters(self, slot, start, count, buff_list)
def ioThinx_AO_SetEngs(self, slot, start, count, buff_list)
def ioThinx_RTD_GetMinValues(self, slot, start, count)
def ioThinx_Relay_ResetCurrentCounts(self, slot, buff_list)
def ioThinx_DO_Config_SetModes(self, slot, start, count, buff_list)
def __init__(self, value)
def ioThinx_TC_GetStatuss(self, slot, start, count)
def ioThinx_DO_GetPwmConfigures(self, slot, start, count)
def ioThinx_RTD_ResetMins(self, slot, buff_list)
def ioThinx_DO_Config_GetPwmCounts(self, slot, start, count)
def ioThinx_DO_GetPwmCounts(self, slot, start, count)
def ioThinx_RTD_Config_GetSensorTypes(self, slot, start, count)
def ioThinx_AO_Config_GetRanges(self, slot, start, count)
def ioThinx_Misc_SetLocateState(self, slot, state)
def ioThinx_DI_SetCntStarts(self, slot, buff_list)
def ioThinx_DO_SetPwmConfigures(self, slot, start, count, frequencies_buff_list, duty_cycles_buff_list)
def check_c_api_version(device_c_api_version, support_c_api_version)
def ioThinx_Serial_GetInterface(self, slot, port)
def ioThinx_AI_GetStatuss(self, slot, start, count)
def ioThinx_AI_ResetMaxs(self, slot, buff_list)
def ioThinx_AO_SetRaws(self, slot, start, count, buff_list)
def ioThinx_DI_SetCntStops(self, slot, buff_list)
def ioThinx_RTD_GetValues(self, slot, start, count)
def ioThinx_DO_Config_GetPwmConfigures(self, slot, start, count)
def ioThinx_AI_GetRaws(self, slot, start, count)
def ioThinx_TC_Config_SetSensorTypes(self, slot, start, count, buff_list)
def get_shared_library_version(self)
def ioThinx_Relay_GetCurrentCounts(self, slot, start, count)
def ioThinx_DI_GetCntValues(self, slot, start, count)
def ioThinx_DO_GetPwmStarts(self, slot)
def ioThinx_Misc_GetModuleCountML(self)
def ioThinx_DI_SetCntOverflows(self, slot, buff_list)
def ioThinx_TC_SetCalibrations(self, slot, start, count, buff_list)
def ioThinx_Relay_GetTotalCounts(self, slot, start, count)
def ioThinx_PWR_Config_SetAlarms(self, slot, start, count, buff_list)
def ioThinx_RTD_GetMaxValues(self, slot, start, count)
def ioThinx_AO_Config_SetRanges(self, slot, start, count, buff_list)
def ioThinx_RTD_SetCalibrations(self, slot, start, count, buff_list)
def ioThinx_TC_GetMinValues(self, slot, start, count)
def ioThinx_TC_ResetCalibrations(self, slot, start, count)
def ioThinx_AI_Config_GetBurnoutValues(self, slot, start, count)
def ioThinx_DO_SetPwmStarts(self, slot, buff_list)
def ioThinx_AO_GetEngs(self, slot, start, count)
def ioThinx_DI_GetCntOverflows(self, slot)
def ioThinx_TC_GetMaxValues(self, slot, start, count)
def ioThinx_PWR_GetFieldStatus(self, slot, start, count)
def ioThinx_IO_GetBusStatus(self)
def ioThinx_DI_Config_SetModes(self, slot, start, count, buff_list)
def ioThinx_TC_GetValues(self, slot, start, count)
def ioThinx_AI_Config_SetRanges(self, slot, start, count, buff_list)
def ioThinx_DI_GetValues(self, slot)
def ioThinx_AI_GetMaxEngs(self, slot, start, count)
def ioThinx_DI_SetCntValues(self, slot, start, count, buff_list)
def ioThinx_AI_ResetMins(self, slot, buff_list)
def ioThinx_DO_GetValues(self, slot)
def ioThinx_Misc_GetModuleInfoML(self, slot)
def ioThinx_RTD_GetStatuss(self, slot, start, count)
def ioThinx_IO_Config_Reload(self)
def ioThinx_RTD_Config_SetSensorTypes(self, slot, start, count, buff_list)
def ioThinx_AI_GetMinRaws(self, slot, start, count)
def ioThinx_DI_Config_SetCntTriggers(self, slot, start, count, buff_list)
def ioThinx_RTD_ResetCalibrations(self, slot, start, count)
def ioThinx_DO_SetPwmStops(self, slot, buff_list)
def ioThinx_Misc_GetRotarySwitchState(self, slot)
def ioThinx_Relay_GetValues(self, slot)
def ioThinx_DO_Config_GetModes(self, slot, start, count)
def ioThinx_AI_GetEngs(self, slot, start, count)
def ioThinx_AI_GetMinEngs(self, slot, start, count)
def ioThinx_AI_Config_SetBurnoutValues(self, slot, start, count, buff_list)
def ioThinx_Serial_GetDevName(self, slot, port)
def ioThinx_TC_Config_GetSensorTypes(self, slot, start, count)
def ioThinx_DI_Config_GetCntTriggers(self, slot, start, count)
def ioThinx_Misc_GetPushButtonState(self, slot)
def ioThinx_TC_ResetMins(self, slot, buff_list)
def ioThinx_DI_Config_SetCntValues(self, slot, start, count, buff_list)
def ioThinx_DI_Config_GetFilters(self, slot, start, count)
def ioThinx_DI_Config_GetModes(self, slot, start, count)
def ioThinx_IO_Client_Init(self)
def ioThinx_PWR_GetSysStatus(self, slot, start, count)
def ioThinx_Misc_GetLocateState(self, slot)
def ioThinx_DO_Config_SetPwmCounts(self, slot, start, count, buff_list)
def ioThinx_TC_ResetMaxs(self, slot, buff_list)
def ioThinx_AI_Config_GetRanges(self, slot, start, count)
def ioThinx_Misc_GetModuleCount(self)
def ioThinx_AO_GetStatuss(self, slot, start, count)
def ioThinx_Relay_SetValues(self, slot, buff_list)
def ioThinx_DO_Config_SetPwmConfigures(self, slot, start, count, frequencies_buff_list, duty_cycles_buff_list)