Initial check in
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
unit m.cfg;
|
||||
|
||||
interface
|
||||
uses
|
||||
m.base,
|
||||
m.cfg.types;
|
||||
|
||||
type
|
||||
TmodCFG = class( TmodBase, ICFG)
|
||||
// ------------------------------------------------------------
|
||||
// ICFG
|
||||
// ------------------------------------------------------------
|
||||
protected
|
||||
function GetCapabilities: Int64;
|
||||
function GetSerialNumber: AnsiString;
|
||||
function GetIdentifier : AnsiString;
|
||||
|
||||
procedure SetSerialNumber( value: AnsiString);
|
||||
procedure SetIdentifier( value: AnsiString);
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TmodCFG }
|
||||
|
||||
|
||||
|
||||
// @@@: ICFG ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// ICFG
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ================================================================================================
|
||||
// get capabilities
|
||||
// ================================================================================================
|
||||
function TmodCFG.GetCapabilities: Int64;
|
||||
var
|
||||
buf : array[0..7] of AnsiChar;
|
||||
cnt : cardinal;
|
||||
|
||||
begin
|
||||
result := 1;
|
||||
|
||||
if Assigned(fDevice) then
|
||||
begin
|
||||
with fDevice do
|
||||
begin
|
||||
Open;
|
||||
|
||||
if (VendorID = $16d0) and (ProductID = $0712) then
|
||||
begin
|
||||
cnt := 0;
|
||||
|
||||
if Pipe0.Transfer( $80, // IN
|
||||
$E0, // Get Serial
|
||||
$00, // Value (not used)
|
||||
$00, // Index (not used)
|
||||
$08, // Length
|
||||
|
||||
@buf, // Buffer to receive data
|
||||
8, // Length of buffer
|
||||
cnt, // Transferred bytes
|
||||
nil) then // Overlapped (not used)
|
||||
begin
|
||||
Result := PInt64(@buf)^;
|
||||
end
|
||||
end;
|
||||
|
||||
Close;
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
// raise
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// get serial number
|
||||
// ================================================================================================
|
||||
function TmodCFG.GetSerialNumber: AnsiString;
|
||||
var
|
||||
buf : array[0..7] of AnsiChar;
|
||||
cnt : cardinal;
|
||||
i : integer;
|
||||
|
||||
begin
|
||||
result := '';
|
||||
|
||||
if Assigned(fDevice) then
|
||||
begin
|
||||
with fDevice do
|
||||
begin
|
||||
Open;
|
||||
|
||||
if (VendorID = $16d0) and (ProductID = $0712) then
|
||||
begin
|
||||
cnt := 0;
|
||||
|
||||
if Pipe0.Transfer( $80, // IN
|
||||
$E1, // Get Serial
|
||||
$00, // Value (not used)
|
||||
$00, // Index (not used)
|
||||
$08, // Length
|
||||
|
||||
@buf, // Buffer to receive data
|
||||
8, // Length of buffer
|
||||
cnt, // Transferred bytes
|
||||
nil) then // Overlapped (not used)
|
||||
begin
|
||||
for i:=0 to 7 do
|
||||
if buf[i] in ['a'..'z','A'..'Z','0'..'9','$','.','_','-']
|
||||
then Result := Result + buf[i]
|
||||
else break
|
||||
end
|
||||
end;
|
||||
|
||||
Close;
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
// raise
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// set serial number
|
||||
// ================================================================================================
|
||||
procedure TmodCFG.SetSerialNumber(value: AnsiString);
|
||||
begin
|
||||
if Assigned(fDevice) then
|
||||
begin
|
||||
|
||||
end
|
||||
|
||||
else
|
||||
// raise
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// get identifier
|
||||
// ================================================================================================
|
||||
function TmodCFG.GetIdentifier: AnsiString;
|
||||
var
|
||||
buf : array[0..7] of AnsiChar;
|
||||
cnt : cardinal;
|
||||
i : integer;
|
||||
|
||||
begin
|
||||
result := '';
|
||||
|
||||
if Assigned(fDevice) then
|
||||
begin
|
||||
with fDevice do
|
||||
begin
|
||||
Open;
|
||||
|
||||
if (VendorID = $16d0) and (ProductID = $0712) then
|
||||
begin
|
||||
cnt := 0;
|
||||
|
||||
if Pipe0.Transfer( $80, // IN
|
||||
$E2, // Get Serial
|
||||
$00, // Value (not used)
|
||||
$00, // Index (not used)
|
||||
$08, // Length
|
||||
|
||||
@buf, // Buffer to receive data
|
||||
8, // Length of buffer
|
||||
cnt, // Transferred bytes
|
||||
nil) then // Overlapped (not used)
|
||||
begin
|
||||
for i:=0 to 7 do
|
||||
if buf[i] in ['a'..'z','A'..'Z','0'..'9','$','.','_','-']
|
||||
then Result := Result + buf[i]
|
||||
else break
|
||||
end
|
||||
end;
|
||||
|
||||
Close;
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
// raise
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// set identifier
|
||||
// ================================================================================================
|
||||
procedure TmodCFG.SetIdentifier(value: AnsiString);
|
||||
begin
|
||||
if Assigned(fDevice) then
|
||||
begin
|
||||
|
||||
end
|
||||
|
||||
else
|
||||
// raise
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user