73 lines
3.0 KiB
Matlab
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
|