Files
2026-05-06 07:47:36 +02:00

73 lines
3.0 KiB
Matlab

function [retCode, dongleArray] = dcgetinfo(libName, typeMask, modelMask, prodcodeMask)
%DCGETINFO Get information about Dinkey Pro/FD dongles attached to this
%computer.
% [RETCODE,DONGLEARRAY] =
% DCGETINFO(LIBNAME,TYPEMASK,MODELMASK,PRODCODEMASK) calls the API via
% the external library LIBNAME. TYPEMASK, MODELMASK and PRODCODEMASK can
% be used to restrict the search to dongles with specific
% characteristics. DONGLEARRAY is a vector of structures; each structure
% contains information about a dongle attached to this computer. RETCODE
% is the return code of the API call.
% Copyright Microcosm Ltd. DO NOT MODIFY THIS FILE.
MAX_USB_DEVICES = 128;
MAX_PRODCODE_LEN = 9;
dongleArray = [];
numberFound = int32(0);
typeArray = zeros(1, MAX_USB_DEVICES, 'int32');
modelArray = zeros(1, MAX_USB_DEVICES, 'int32');
productCodeArray = zeros(1, MAX_USB_DEVICES * MAX_PRODCODE_LEN, 'uint8');
dongleNumberArray = zeros(1, MAX_USB_DEVICES, 'uint32');
updateNumberArray = zeros(1, MAX_USB_DEVICES, 'int32');
[retCode, prodcodeMask, numberFound, typeArray, modelArray, productCodeArray, dongleNumberArray, updateNumberArray] = ...
calllib(libName, 'DCGetInfo', typeMask, modelMask, prodcodeMask, MAX_USB_DEVICES, numberFound, typeArray, modelArray, productCodeArray, dongleNumberArray, updateNumberArray);
for (i = 1:numberFound)
productCode = productCodeArray(((i-1)*MAX_PRODCODE_LEN)+1 : i*MAX_PRODCODE_LEN); % Get product codes out of array of bytes, 9 bytes at a time
productCode = deblank(char(productCode)); % Convert to string and remove any trailing NULLs
newDongle = createdonglestructure(typeArray(i), modelArray(i), productCode, dongleNumberArray(i), updateNumberArray(i));
dongleArray = [dongleArray newDongle];
end
end
function dongle = createdonglestructure(type, model, productCode, dongleNumber, updateNumber)
% Create a structure representing a dongle detected by dcgetinfo()
dongle.type = type;
switch type
case 1
dongle.type_as_string = 'Pro';
case 2
dongle.type_as_string = 'FD';
otherwise
dongle.type_as_string = ''; % Should never happen!
end
dongle.model = model;
switch model
case 1
dongle.model_as_string = 'Lite';
case 2
dongle.model_as_string = 'Plus';
case 3
dongle.model_as_string = 'Net (1 user)';
case 4
dongle.model_as_string = 'Net (5 users)';
case 5
dongle.model_as_string = 'Net (10 users)';
case 6
dongle.model_as_string = 'Net (50 users)';
case 7
dongle.model_as_string = 'Net (unlimited users)';
otherwise
dongle.model_as_string = ''; % Should never happen!
end
dongle.product_code = char(productCode);
dongle.dongle_number = uint32(dongleNumber);
dongle.update_number = int32(updateNumber);
end