Add Original SDK
This commit is contained in:
249
Dinkey Pro 7.6.1/Samples/MATLAB/DinkeyChange/dcsample.m
Normal file
249
Dinkey Pro 7.6.1/Samples/MATLAB/DinkeyChange/dcsample.m
Normal file
@@ -0,0 +1,249 @@
|
||||
function dcsample
|
||||
%DCSAMPLE Example use of the DinkeyChange API in MATLAB.
|
||||
|
||||
% Copyright Microcosm Ltd.
|
||||
|
||||
% Load the correct library for this platform
|
||||
switch computer()
|
||||
case 'PCWIN64' % 64-bit Windows
|
||||
loadlibrary('DinkeyChange64.dll', @dinkeychange64proto, 'alias', 'dinkeychange');
|
||||
case 'PCWIN' % 32-bit Windows
|
||||
loadlibrary('DinkeyChange.dll', @dinkeychangewin32proto, 'alias', 'dinkeychange');
|
||||
case 'GLNXA64' % 64-bit Linux
|
||||
loadlibrary('DinkeyChange64.so', @dinkeychange64proto, 'alias', 'dinkeychange');
|
||||
case 'GLNX86' % 32-bit Linux
|
||||
loadlibrary('DinkeyChange.so', @dinkeychange32proto, 'alias', 'dinkeychange');
|
||||
case 'MACI64' % 64-bit Mac OS X
|
||||
loadlibrary('DinkeyChange64.dylib', @dinkeychange64proto, 'alias', 'dinkeychange');
|
||||
case 'MAC' % 32-bit Mac OS X
|
||||
loadlibrary('DinkeyChange32.dylib', @dinkeychange32proto, 'alias', 'dinkeychange');
|
||||
otherwise
|
||||
disp('Error! Platform not supported!');
|
||||
return
|
||||
end
|
||||
|
||||
% Each of the functions below demonstrates different API functionality.
|
||||
% Uncomment the appropriate functions to execute the examples.
|
||||
% See the comments in each function for more details about the features
|
||||
% that they demonstrate.
|
||||
|
||||
getdongleinfo('dinkeychange');
|
||||
%writediagnosticfile('dinkeychange');
|
||||
%applyshortupdatecode('dinkeychange');
|
||||
%applystronglyencryptedupdatecode('dinkeychange');
|
||||
%restorefdlite('dinkeychange');
|
||||
%getmachineid('dinkeychange');
|
||||
%downloadtempsoftwarekey('dinkeychange');
|
||||
%downloaddemosoftwarekey('dinkeychange');
|
||||
|
||||
unloadlibrary('dinkeychange');
|
||||
end
|
||||
|
||||
function getdongleinfo(libName)
|
||||
% Display information about the dongles attached to this computer
|
||||
|
||||
% Possible values for dcgetinfo's typeMask parameter
|
||||
TYPE_MASK_PRO = 1;
|
||||
TYPE_MASK_FD = 2;
|
||||
TYPE_MASK_ALL = bitor(TYPE_MASK_PRO, TYPE_MASK_FD);
|
||||
|
||||
% Possible values for dcgetinfo's modelMask parameter
|
||||
MODEL_MASK_LITE = 1;
|
||||
MODEL_MASK_PLUS = 2;
|
||||
MODEL_MASK_NET = 4;
|
||||
MODEL_MASK_ALL = bitor(bitor(MODEL_MASK_LITE, MODEL_MASK_PLUS), MODEL_MASK_NET);
|
||||
MODEL_MASK_DEFAULT = bitor(MODEL_MASK_PLUS, MODEL_MASK_NET);
|
||||
|
||||
% Call the DinkeyChange API
|
||||
[retCode, dongleArray] = dcgetinfo(libName, TYPE_MASK_ALL, MODEL_MASK_ALL, '');
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, 0);
|
||||
return
|
||||
end
|
||||
|
||||
for (i = 1:length(dongleArray))
|
||||
disp(sprintf('%3d) Dinkey %s %s', i, dongleArray(i).type_as_string, dongleArray(i).model_as_string));
|
||||
disp(sprintf(' Product code : %s', dongleArray(i).product_code));
|
||||
disp(sprintf(' Dongle number: %u', dongleArray(i).dongle_number));
|
||||
disp(sprintf(' Update number: %u', dongleArray(i).update_number));
|
||||
disp(sprintf('\n'));
|
||||
end
|
||||
end
|
||||
|
||||
function writediagnosticfile(libName)
|
||||
% Write diagnostic information about the dongles attached to this computer
|
||||
% to an encrypted file.
|
||||
|
||||
filename = '!!!! REPLACE THIS WITH THE NAME OF THE FILE TO WRITE TO';
|
||||
|
||||
% Call the DinkeyChange API
|
||||
retCode = dcgetdiagnosticinfo(libName, filename);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, 0);
|
||||
return
|
||||
end
|
||||
|
||||
disp(['Successfully wrote diagnostic information to ' filename]);
|
||||
end
|
||||
|
||||
function applyshortupdatecode(libName)
|
||||
% Update a dongle attached to this computer using a short update code
|
||||
|
||||
% Call the DinkeyChange API
|
||||
[retCode, confirmationCode, extErr] = dcdoupdatecodestring(libName, '!!!! REPLACE THIS WITH A VALID UPDATE CODE STRING');
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
disp('Successfully updated dongle');
|
||||
disp(['Confirmation code: ' sprintf('%X', confirmationCode)]);
|
||||
end
|
||||
|
||||
function applystronglyencryptedupdatecode(libName)
|
||||
% Update a dongle attached to this computer using a strongly encrypted
|
||||
% update code file
|
||||
|
||||
% Call the DinkeyChange API
|
||||
[retCode, confirmationCode, extErr] = dcdoupdatecodefromfile(libName, '!!!! REPLACE THIS WITH A VALID UPDATE CODE FILENAME');
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
disp('Successfully updated dongle');
|
||||
disp(['Confirmation code: ' sprintf('%X', confirmationCode)]);
|
||||
end
|
||||
|
||||
function restorefdlite(libName)
|
||||
% Restore the required hidden file on a Dinkey FD Lite dongle.
|
||||
|
||||
% Call the DinkeyChange API
|
||||
retCode = dcrestorefdlite(libName);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, 0);
|
||||
return
|
||||
end
|
||||
|
||||
disp('Successfully restored FD Lite dongle');
|
||||
end
|
||||
|
||||
function getmachineid(libName)
|
||||
% Display this computer's machine ID
|
||||
|
||||
% Call the DinkeyChange API
|
||||
[retCode, machineId, extErr] = dcgetmachineid(libName);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
disp(['The machine ID for this computer is: ' sprintf('%X', machineId)]);
|
||||
end
|
||||
|
||||
function downloadtempsoftwarekey(libName)
|
||||
% Download and install a temporary software key on this computer
|
||||
|
||||
% First call the DinkeyChange API to get the machine ID
|
||||
[retCode, machineId, extErr] = dcgetmachineid(libName);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
% Then call the API again to install the software key
|
||||
[retCode, extErr] = dcdownloadtempsoftwarekey(libName, machineId);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
disp('The temporary software key has been succesfully installed.');
|
||||
end
|
||||
|
||||
function downloaddemosoftwarekey(libName)
|
||||
% Download and install a demo software key on this computer
|
||||
|
||||
% Possible values for dcdownloaddemosoftwarekey's model parameter
|
||||
SWKEY_MODEL_DEFAULT = -1;
|
||||
SWKEY_MODEL_PRO_LITE = 0;
|
||||
SWKEY_MODEL_PRO_PLUS = 1;
|
||||
SWKEY_MODEL_PRO_NET = 2;
|
||||
SWKEY_MODEL_FD_LITE = 3;
|
||||
SWKEY_MODEL_FD_PLUS = 4;
|
||||
SWKEY_MODEL_FD_NET = 5;
|
||||
|
||||
% First call the DinkeyChange API to get the machine ID
|
||||
[retCode, machineId, extErr] = dcgetmachineid(libName);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
% Then call the API again to install the software key
|
||||
[retCode, extErr] = dcdownloaddemosoftwarekey(libName, machineId, '!!!! REPLACE THIS WITH THE PRODUCT CODE OF THE KEY', SWKEY_MODEL_DEFAULT);
|
||||
|
||||
% Check the return value
|
||||
if (retCode ~= 0)
|
||||
displayerror(retCode, extErr);
|
||||
return
|
||||
end
|
||||
|
||||
disp('The demo software key has been succesfully installed.');
|
||||
end
|
||||
|
||||
% An example of error reporting
|
||||
% Displays descriptions for some common error codes
|
||||
function displayerror(retCode, extErr)
|
||||
switch retCode
|
||||
case 401
|
||||
disp('Error! No dongles detected that meet the search criteria.');
|
||||
case 409
|
||||
disp('Error! The dongle detected has not been programmed by DinkeyAdd.');
|
||||
case 754
|
||||
disp('Error! The specified output file could not be written to.');
|
||||
case 758
|
||||
disp('Error! Cannot open the file specified.');
|
||||
case 759
|
||||
disp('Error! The file specified is not a valid update code file.');
|
||||
case 762
|
||||
disp('Error! The update code contains invalid characters.');
|
||||
case 763
|
||||
disp('Error! Invalid update code.');
|
||||
case 764
|
||||
disp('Error! The update code was entered incorrectly, or the update code file is corrupt.');
|
||||
case 765
|
||||
disp('Error! The update code does not match any dongle attached to your computer.');
|
||||
case 766
|
||||
disp('Error! The update number for this update code is too high. If you have more than one update code, ensure that you apply them in the correct order.');
|
||||
case 767
|
||||
disp('Error! You have already entered this update code.');
|
||||
case 1905
|
||||
disp('Error! There is no temporary software key available for download.');
|
||||
case 1907
|
||||
disp('Error! The temporary software key has expired. Cannot download it.');
|
||||
case 1910
|
||||
disp('Error! The temporary software key has already been downloaded.');
|
||||
otherwise
|
||||
str = sprintf('An error occurred checking the dongle. Error: %d, Extended Error: %d', retCode, extErr);
|
||||
disp(str);
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user