Sie sind nicht angemeldet.

Anmelden
Diese Seite kann nicht editiert werden.
 
 
 

Feature Report Protocol

Von $1

    Inhaltsverzeichnis
    Um zurückzugehen, müssen die aktuelle und die ältere Version mit Hilfe der Historie verglichen werden.

    Kombinierter Revisionsvergleich

    Vergleich der Version vom 20:06, 28 Feb 2015 von stephan mit der Version modifiziert am 12:24, 1 Mar 2015 von stephan.

    Command OverviewIDsBereich bearbeiten

    All command IDs are noted in decimal.

    Memory Access Commands

    These commands are used to write a new configuration to the Arcaze USB-Interface.
     

    CommandID IDName Description
    CmdIdReadRam2 2CmdIdReadRam  
    CmdIdWriteToRam3 3CmdIdWriteToRam  
    CmdIdCopyFlashToRam4 4CmdIdCopyFlashToRam  
    CmdIdClearFlash5 5CmdIdClearFlash  
    CmdIdProgRamToFlash6 6CmdIdProgRamToFlash  
    CmdIdClearRam7 7CmdIdClearRam  

    System Commands

    Command ID Description
    CmdIdReadPorts8 8CmdIdReadPorts  
    CmdIdSetPadMode9 9CmdIdSetPadMode  
    CmdIdReadDebugInfo10 10CmdIdReadDebugInfo  
    CmdIdValidateConfig12 12CmdIdValidateConfig  
    CmdIdInvalidateConfig13 13CmdIdInvalidateConfig  
    CmdIDEnumerate14 14CmdIDEnumerate  
    CmdIdReadBootSerialNumber15 15CmdIdReadBootSerialNumber  
    CmdIdReadConfigSerialNumber16 16CmdIdReadConfigSerialNumber  
    CmdIdReadStatus17 17CmdIdReadStatus  
    CmdIdReadConfigNumber18 18CmdIdReadConfigNumber  
    CmdIdGetPadMode20 20CmdIdGetPadMode  
    CmdIdStartMacros21 21CmdIdStartMacros  
    CmdIdStopMacros22 22CmdIdStopMacros  
    CmdIdPrintMacros23 23CmdIdPrintMacros  
    CmdIdSetTimerIRQ24 24CmdIdSetTimerIRQ  
    CmdIdPrintInReports25 25CmdIdPrintInReports  

    Onboard Port Commands

    Command ID Description
    CmdIdPrintADC26 26CmdIdPrintADC  
    CmdIdReadADC27 27CmdIdReadADC  
    CmdIdSetConfig28 28CmdIdSetConfig  
    CmdIdSetPinDirection29 29CmdIdSetPinDirection  
    CmdIdSetPin30 30CmdIdSetPin  
    CmdIdSetPortDirection31 31CmdIdSetPortDirection  
    CmdIdSetPort 32 CmdIdSetPort 

    Quadrature Encoder Commands

    Command ID Description
    CmdIdReadQuadratureEncoders 44  
    CmdIdReadPortsWithHistory33 45CmdIdMax7219DisplayInit  

    Display Driver Commands

    Command ID Description
    CmdIdMax7219DisplayInit34 33CmdIdMax7219WriteReg  
    CmdIdMax7219WriteReg35 34CmdIdMax7219ReadReg  
    CmdIdMax7219ReadReg36 35CmdIdMax7219WriteDigits  
    CmdIdMax7219WriteDigits37 36CmdIdTlc5926Init  

    LED Driver 2 Commands

    Command ID Description
    CmdIdTlc5926Init38 37CmdIdTlc5926WriteLeds  
    CmdIdTlc5926WriteLeds39 38CmdIdTlc5926StrobeEnable  
    CmdIdTlc5926StrobeEnable40 39CmdIdTlc5943Init  

    LED Driver 3 Commands

    Command ID Description
    CmdIdTlc5943Init41 40CmdIdTlc5943WriteLeds1Bit  
    CmdIdTlc5943WriteLeds1Bit42 41  
    CmdIdTlc5943WriteLeds8Bit 42  
    CmdIdTlc5943Strobe 43 CmdIdTlc5943Strobe 

    {{ simpsol.pagebreak{} }}

    Command Descriptions

    Memory Access Commands

    CMD_READ_RAM (2)

    Read Data from the TransferRAM. This is mainly used together with CMD_COPY_FLASH_TO_RAM and CMD_COPY_DATA_TO_RAM.

    The Out Feature Report sets the base address of the data to be read. With every In Feature Report the base address is incremented by the number of received bytes. Therefore it's also possible to do "burst reads" with one Out Report, setting the start address and multiple In Reports to read the data continuously.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d2 1  CMD_READ_RAM
    144 ParameterCmdIdReadQuadratureEncoders   1  Not used
    245 AddressCmdIdReadPortsWithHistory   2  Start address for read. This is the relative address inside the Flash RAM, first byte has address 0.
    4…63        Not used

    No length is submitted. The In report is always completely filled until the end of the RAM block is reached or the internal number of valid bytes is reached.

    In Report 
    Address Content Value Length (Bytes) Remarks
    0 Command 0d24 1 CMD_READ_TRANSFER_RAM
    1 RetVal   1 Return Value
    2 Address   2 Base address of Data
    4 Length   2 Number of valid bytes in this report
    6…63 Payload   58 Payload data

    In reports can be polled until end of RAM block is reached (address 0x0fff). Continued reads supply all zeros.

    Additionally note that the firmware also respects the number of valid bytes in RAM. So, if by a previous command only the first 256 bytes have been written, it's not possible to read above address 0x00ff. When reading above, the data is all zero.

    {{ simpsol.pagebreak{} }}

    CMD_WRITE_RAM (3)

    Write Data to TransferRAM.

    This Out Feature Report can write a maximum of 58 bytes into TransferRAM. Every Out Feature Report sets the destination address, therefore there is no such like a burst mode here.

    Important: Note that you have to issue a CMD_CLEAR_FLASH_RAM before being able to write to Flash RAM for security reasons!

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d25 1 CMD_WRITE_TRANSFER_RAM
    1 Parameter   1 Not used
    2 Address   2 Start address for write. This is the relative address inside the Flash RAM, first byte has address 0.
    4 Length   2 Number of bytes to write in this report.
    6…63       Not used

    It's possible to write to any address between 0x0000 and 0x0fff. All other writes are ignored and an RETVAL_WRITE_OUTSIDE_RAM error is issued.

    {{ simpsol.pagebreak{} }}

    CMD_CLEAR_RAM (4)

    Clears the complete TransferRAM (4kBytes total) by overwriting all bytes with 0xFF.

    Note that this command was named CMD_CLEAR_FLASH_RAM before, due to historic reasons.

    Important: Note that you have to issue a CMD_CLEAR_FLASH_RAM before being allowed to write to Flash RAM for security reasons! The number of valid data bytes in Transfer RAM is set to 0x1000 by this command, so all data bytes can be read and overwritten afterwards.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d36 1  CMD_CLEAR_TRANSFER_RAM
    1...63        Not used

    {{ simpsol.pagebreak{} }}

    CMD_COPY_FLASH_TO_RAM (5)

    Copies addressed data from a flash sector to the TransferRAM.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d50 1 CMD_COPY_FLASH_TO_RAM
    1 SectorID   1 Sector ID to be read. Refer to sector table.
    2 SourceAddress   4 Relative start address inside the selected sector.
    4 Length   4 Number of bytes to read. Maximum is 0x1000 due to size of TransferRAM.
    6…63       Not used

    {{ simpsol.pagebreak{} }}

    CMD_COPY_RAM_TO_FLASH (51)

    Programs Transfer RAM contents into Flash Memory.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d51 1 CMD_READ_TRANSFER_RAM
    1 SectorID   1 SectorID 
    2 DestinationAddress   4 Start address in the sector to be written.
    6 Length   4 Number of bytes to be written.
    7...63       Not used
    In  Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d51 1  CMD_READ_TRANSFER_RAM
    1 Return Value   1  Return Value refer to return value table

    Destination Address + Length must be < sector end address. Otherwise a RETVAL_WRITE_OUTSIDE_SECTOR is issued.

    {{ simpsol.pagebreak{} }}

    CMD_COPY_DATA_TO_RAM (56)

    Copies a predefined data block into TransferRAM.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d56 1  CMD_COPY_FLASH_TO_RAM
    1 DataID   1  Data ID of data block to be read. Refer to DataID table below.
    6…63        Not used
    List of DataIDs
    DataID DataID Name Content Remark
    0 COPYDATA_ID_RSAENC_AESKEY RSA Encrypted AES Key  
    1 COPYDATA_ID_SIGNED_DOCHASH Signed Document Hash  
    2 COPYDATA_ID_PUBLIC_KEY1 Notaries Key / Public Key 1 The notary's public key in an (undocumented) internal format. This function was written so the user can check if the key is correct.
    3 COPYDATA_ID_CERTIFICATE Pads Certificate The pad's public certificate in X.509 format. In conjunction with the commands for signing (which use the corresponding private key) this command can be used to build a certificate for a document.
    4 COPYDATA_ID_NOTARY_INFO Notary Info Some information about the notary (name, address, etc.) who has the corresponding private key that is needed to decrypt the biodata from the current pad. This is a binary array of a (constant) length of 200 bytes that may contain any character (including newlines, etc.). If not all of the data is used, the end should be filled with space character.
    100 COPYDATA_ID_PLAIN_AESKEY Plain AES Key Debug mode only
    101 COPYDATA_ID_AESENC_AESKEY AES Key AES encrypted with Preliminary DocHash Debug mode only
    102 COPYDATA_ID_PRELIM_DOCHASH Preliminary DocHash Debug mode only
    103 COPYDATA_ID_FINAL_DOCHASH Final Document Hash Debug mode only
    104 COPYDATA_ID_PRIVATE_KEY2 Private Key2 = The Pad's Private Key Debug mode only

    ...

    {{ simpsol.pagebreak{} }}

    CMD_ERASE_FLASH (52)

    Erase a flash sector.

    Access restrictions apply. If a user is not entitled to erase this sector it is denied. Refer to flash sector table to see which sectors allow erasing.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d52 1  CMD_ERASE_FLASH
    1 SectorID   1  Sector ID to be read. Refer to sector table.
    6…63        Not used

    This replaces the commands

    • CMD_CLEAR_CFLASH (23)
    • CMD_CLEAR_WORM (38)

    {{ simpsol.pagebreak{} }}

    Andere Änderungen:

    1. /body/table/@border: keine ⇒ "1"
    2. /body/table/@cellpadding: keine ⇒ "1"
    3. /body/table/@cellspacing: keine ⇒ "1"
    4. /body/table/@style: keine ⇒ "width: 80%; table-layout: fixed;"
    5. /body/table/thead/tr/th/@colspan: keine ⇒ "3"
    6. /body/table/thead/tr/th[3]/@colspan: keine ⇒ "3"
    7. /body/table/tbody/tr/td/@colspan: keine ⇒ "3"
    8. /body/table/tbody/tr/td[2]/@align: keine ⇒ "center"
    9. /body/table/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    10. /body/table/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    11. /body/table/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    12. /body/table/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    13. /body/table/tbody/tr[3]/td/@colspan: keine ⇒ "3"
    14. /body/table/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    15. /body/table/tbody/tr[3]/td[3]/@colspan: keine ⇒ "3"
    16. /body/table/tbody/tr[4]/td/@colspan: keine ⇒ "3"
    17. /body/table/tbody/tr[4]/td[2]/@align: keine ⇒ "center"
    18. /body/table/tbody/tr[4]/td[3]/@colspan: keine ⇒ "3"
    19. /body/table/tbody/tr[5]/td/@colspan: keine ⇒ "3"
    20. /body/table/tbody/tr[5]/td[2]/@align: keine ⇒ "center"
    21. /body/table/tbody/tr[5]/td[3]/@colspan: keine ⇒ "3"
    22. /body/table/tbody/tr[6]/td/@colspan: keine ⇒ "3"
    23. /body/table/tbody/tr[6]/td[2]/@align: keine ⇒ "center"
    24. /body/table/tbody/tr[6]/td[3]/@colspan: keine ⇒ "3"
    25. /body/table[2]/tbody/tr/td/@colspan: keine ⇒ "3"
    26. /body/table[2]/tbody/tr/td[2]/@align: keine ⇒ "center"
    27. /body/table[2]/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    28. /body/table[2]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    29. /body/table[2]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    30. /body/table[2]/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    31. /body/table[2]/tbody/tr[3]/td/@colspan: keine ⇒ "3"
    32. /body/table[2]/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    33. /body/table[2]/tbody/tr[3]/td[3]/@colspan: keine ⇒ "3"
    34. /body/table[2]/tbody/tr[4]/td/@colspan: keine ⇒ "3"
    35. /body/table[2]/tbody/tr[4]/td[2]/@align: keine ⇒ "center"
    36. /body/table[2]/tbody/tr[4]/td[3]/@colspan: keine ⇒ "3"
    37. /body/table[2]/tbody/tr[5]/td/@colspan: keine ⇒ "3"
    38. /body/table[2]/tbody/tr[5]/td[2]/@align: keine ⇒ "center"
    39. /body/table[2]/tbody/tr[5]/td[3]/@colspan: keine ⇒ "3"
    40. /body/table[2]/tbody/tr[6]/td/@colspan: keine ⇒ "3"
    41. /body/table[2]/tbody/tr[6]/td[2]/@align: keine ⇒ "center"
    42. /body/table[2]/tbody/tr[6]/td[3]/@colspan: keine ⇒ "3"
    43. /body/table[2]/tbody/tr[7]/td/@colspan: keine ⇒ "3"
    44. /body/table[2]/tbody/tr[7]/td[2]/@align: keine ⇒ "center"
    45. /body/table[2]/tbody/tr[7]/td[3]/@colspan: keine ⇒ "3"
    46. /body/table[2]/tbody/tr[8]/td/@colspan: keine ⇒ "3"
    47. /body/table[2]/tbody/tr[8]/td[2]/@align: keine ⇒ "center"
    48. /body/table[2]/tbody/tr[8]/td[3]/@colspan: keine ⇒ "3"
    49. /body/table[2]/tbody/tr[9]/td/@colspan: keine ⇒ "3"
    50. /body/table[2]/tbody/tr[9]/td[2]/@align: keine ⇒ "center"
    51. /body/table[2]/tbody/tr[9]/td[3]/@colspan: keine ⇒ "3"
    52. /body/table[2]/tbody/tr[10]/td/@colspan: keine ⇒ "3"
    53. /body/table[2]/tbody/tr[10]/td[2]/@align: keine ⇒ "center"
    54. /body/table[2]/tbody/tr[10]/td[3]/@colspan: keine ⇒ "3"
    55. /body/table[2]/tbody/tr[11]/td/@colspan: keine ⇒ "3"
    56. /body/table[2]/tbody/tr[11]/td[2]/@align: keine ⇒ "center"
    57. /body/table[2]/tbody/tr[11]/td[3]/@colspan: keine ⇒ "3"
    58. /body/table[2]/tbody/tr[12]/td/@colspan: keine ⇒ "3"
    59. /body/table[2]/tbody/tr[12]/td[2]/@align: keine ⇒ "center"
    60. /body/table[2]/tbody/tr[12]/td[3]/@colspan: keine ⇒ "3"
    61. /body/table[2]/tbody/tr[13]/td/@colspan: keine ⇒ "3"
    62. /body/table[2]/tbody/tr[13]/td[2]/@align: keine ⇒ "center"
    63. /body/table[2]/tbody/tr[13]/td[3]/@colspan: keine ⇒ "3"
    64. /body/table[2]/tbody/tr[14]/td/@colspan: keine ⇒ "3"
    65. /body/table[2]/tbody/tr[14]/td[2]/@align: keine ⇒ "center"
    66. /body/table[2]/tbody/tr[14]/td[3]/@colspan: keine ⇒ "3"
    67. /body/table[2]/tbody/tr[15]/td/@colspan: keine ⇒ "3"
    68. /body/table[2]/tbody/tr[15]/td[2]/@align: keine ⇒ "center"
    69. /body/table[2]/tbody/tr[15]/td[3]/@colspan: keine ⇒ "3"
    70. /body/table[2]/tbody/tr[16]/td/@colspan: keine ⇒ "3"
    71. /body/table[2]/tbody/tr[16]/td[2]/@align: keine ⇒ "center"
    72. /body/table[2]/tbody/tr[16]/td[3]/@colspan: keine ⇒ "3"
    73. /body/table[3]/tbody/tr/td/@colspan: keine ⇒ "3"
    74. /body/table[3]/tbody/tr/td[2]/@align: keine ⇒ "center"
    75. /body/table[3]/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    76. /body/table[3]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    77. /body/table[3]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    78. /body/table[3]/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    79. /body/table[3]/tbody/tr[3]/td/@colspan: keine ⇒ "3"
    80. /body/table[3]/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    81. /body/table[3]/tbody/tr[3]/td[3]/@colspan: keine ⇒ "3"
    82. /body/table[3]/tbody/tr[4]/td/@colspan: keine ⇒ "3"
    83. /body/table[3]/tbody/tr[4]/td[2]/@align: keine ⇒ "center"
    84. /body/table[3]/tbody/tr[4]/td[3]/@colspan: keine ⇒ "3"
    85. /body/table[3]/tbody/tr[5]/td/@colspan: keine ⇒ "3"
    86. /body/table[3]/tbody/tr[5]/td[2]/@align: keine ⇒ "center"
    87. /body/table[3]/tbody/tr[5]/td[3]/@colspan: keine ⇒ "3"
    88. /body/table[3]/tbody/tr[6]/td/@colspan: keine ⇒ "3"
    89. /body/table[3]/tbody/tr[6]/td[2]/@align: keine ⇒ "center"
    90. /body/table[3]/tbody/tr[6]/td[3]/@colspan: keine ⇒ "3"
    91. /body/table[3]/tbody/tr[7]/td/@colspan: keine ⇒ "3"
    92. /body/table[3]/tbody/tr[7]/td[3]/@colspan: keine ⇒ "3"
    93. /body/table[4]/tbody/tr/td/@colspan: keine ⇒ "3"
    94. /body/table[4]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    95. /body/table[4]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    96. /body/table[4]/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    97. /body/table[5]/tbody/tr/td/@colspan: keine ⇒ "3"
    98. /body/table[5]/tbody/tr/td[2]/@align: keine ⇒ "center"
    99. /body/table[5]/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    100. /body/table[5]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    101. /body/table[5]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    102. /body/table[5]/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    103. /body/table[5]/tbody/tr[3]/td/@colspan: keine ⇒ "3"
    104. /body/table[5]/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    105. /body/table[5]/tbody/tr[3]/td[3]/@colspan: keine ⇒ "3"
    106. /body/table[5]/tbody/tr[4]/td/@colspan: keine ⇒ "3"
    107. /body/table[5]/tbody/tr[4]/td[2]/@align: keine ⇒ "center"
    108. /body/table[5]/tbody/tr[4]/td[3]/@colspan: keine ⇒ "3"
    109. /body/table[6]/tbody/tr/td/@colspan: keine ⇒ "3"
    110. /body/table[6]/tbody/tr/td[2]/@align: keine ⇒ "center"
    111. /body/table[6]/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    112. /body/table[6]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    113. /body/table[6]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    114. /body/table[6]/tbody/tr[2]/td[3]/@colspan: keine ⇒ "3"
    115. /body/table[6]/tbody/tr[3]/td/@colspan: keine ⇒ "3"
    116. /body/table[6]/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    117. /body/table[6]/tbody/tr[3]/td[3]/@colspan: keine ⇒ "3"
    118. /body/table[7]/tbody/tr/td/@colspan: keine ⇒ "3"
    119. /body/table[7]/tbody/tr/td[2]/@align: keine ⇒ "center"
    120. /body/table[7]/tbody/tr/td[3]/@colspan: keine ⇒ "3"
    121. /body/table[7]/tbody/tr[2]/td/@colspan: keine ⇒ "3"
    122. /body/table[7]/tbody/tr[2]/td[2]/@align: keine ⇒ "center"
    123. /body/table[7]/tbody/tr[3]/td[2]/@align: keine ⇒ "center"
    124. /body/table[7]/tbody/tr[4]/td/@colspan: keine ⇒ "3"
    125. /body/table[7]/tbody/tr[4]/td[3]/@colspan: keine ⇒ "3"

    Version vom 20:06, 28 Feb 2015

    Diese Revision wurde von stephan (Sperren) verändert

    Command IDs

    ID Name Description
    2 CmdIdReadRam  
    3 CmdIdWriteToRam  
    4 CmdIdCopyFlashToRam  
    5 CmdIdClearFlash  
    6 CmdIdProgRamToFlash  
    7 CmdIdClearRam  
    8 CmdIdReadPorts  
    9 CmdIdSetPadMode  
    10 CmdIdReadDebugInfo  
    12 CmdIdValidateConfig  
    13 CmdIdInvalidateConfig  
    14 CmdIDEnumerate  
    15 CmdIdReadBootSerialNumber  
    16 CmdIdReadConfigSerialNumber  
    17 CmdIdReadStatus  
    18 CmdIdReadConfigNumber  
    20 CmdIdGetPadMode  
    21 CmdIdStartMacros  
    22 CmdIdStopMacros  
    23 CmdIdPrintMacros  
    24 CmdIdSetTimerIRQ  
    25 CmdIdPrintInReports  
    26 CmdIdPrintADC  
    27 CmdIdReadADC  
    28 CmdIdSetConfig  
    29 CmdIdSetPinDirection  
    30 CmdIdSetPin  
    31 CmdIdSetPortDirection  
    32 CmdIdSetPort  
    33 CmdIdMax7219DisplayInit  
    34 CmdIdMax7219WriteReg  
    35 CmdIdMax7219ReadReg  
    36 CmdIdMax7219WriteDigits  
    37 CmdIdTlc5926Init  
    38 CmdIdTlc5926WriteLeds  
    39 CmdIdTlc5926StrobeEnable  
    40 CmdIdTlc5943Init  
    41 CmdIdTlc5943WriteLeds1Bit  
    42 CmdIdTlc5943WriteLeds8Bit  
    43 CmdIdTlc5943Strobe  
    44 CmdIdReadQuadratureEncoders  
    45 CmdIdReadPortsWithHistory  

    Version seit 12:24, 1 Mar 2015

    Diese Revision wurde von stephan (Sperren) verändert

    Command OverviewBereich bearbeiten

    All command IDs are noted in decimal.

    Memory Access Commands

    These commands are used to write a new configuration to the Arcaze USB-Interface.
     

    Command ID Description
    CmdIdReadRam 2  
    CmdIdWriteToRam 3  
    CmdIdCopyFlashToRam 4  
    CmdIdClearFlash 5  
    CmdIdProgRamToFlash 6  
    CmdIdClearRam 7  

    System Commands

    Command ID Description
    CmdIdReadPorts 8  
    CmdIdSetPadMode 9  
    CmdIdReadDebugInfo 10  
    CmdIdValidateConfig 12  
    CmdIdInvalidateConfig 13  
    CmdIDEnumerate 14  
    CmdIdReadBootSerialNumber 15  
    CmdIdReadConfigSerialNumber 16  
    CmdIdReadStatus 17  
    CmdIdReadConfigNumber 18  
    CmdIdGetPadMode 20  
    CmdIdStartMacros 21  
    CmdIdStopMacros 22  
    CmdIdPrintMacros 23  
    CmdIdSetTimerIRQ 24  
    CmdIdPrintInReports 25  

    Onboard Port Commands

    Command ID Description
    CmdIdPrintADC 26  
    CmdIdReadADC 27  
    CmdIdSetConfig 28  
    CmdIdSetPinDirection 29  
    CmdIdSetPin 30  
    CmdIdSetPortDirection 31  
    CmdIdSetPort 32  

    Quadrature Encoder Commands

    Command ID Description
    CmdIdReadQuadratureEncoders 44  
    CmdIdReadPortsWithHistory 45  

    Display Driver Commands

    Command ID Description
    CmdIdMax7219DisplayInit 33  
    CmdIdMax7219WriteReg 34  
    CmdIdMax7219ReadReg 35  
    CmdIdMax7219WriteDigits 36  

    LED Driver 2 Commands

    Command ID Description
    CmdIdTlc5926Init 37  
    CmdIdTlc5926WriteLeds 38  
    CmdIdTlc5926StrobeEnable 39  

    LED Driver 3 Commands

    Command ID Description
    CmdIdTlc5943Init 40  
    CmdIdTlc5943WriteLeds1Bit 41  
    CmdIdTlc5943WriteLeds8Bit 42  
    CmdIdTlc5943Strobe 43  

    {{ simpsol.pagebreak{} }}

    Command Descriptions

    Memory Access Commands

    CMD_READ_RAM (2)

    Read Data from the TransferRAM. This is mainly used together with CMD_COPY_FLASH_TO_RAM and CMD_COPY_DATA_TO_RAM.

    The Out Feature Report sets the base address of the data to be read. With every In Feature Report the base address is incremented by the number of received bytes. Therefore it's also possible to do "burst reads" with one Out Report, setting the start address and multiple In Reports to read the data continuously.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d2 1  CMD_READ_RAM
    1 Parameter   1  Not used
    2 Address   2  Start address for read. This is the relative address inside the Flash RAM, first byte has address 0.
    4…63        Not used

    No length is submitted. The In report is always completely filled until the end of the RAM block is reached or the internal number of valid bytes is reached.

    In Report 
    Address Content Value Length (Bytes) Remarks
    0 Command 0d24 1 CMD_READ_TRANSFER_RAM
    1 RetVal   1 Return Value
    2 Address   2 Base address of Data
    4 Length   2 Number of valid bytes in this report
    6…63 Payload   58 Payload data

    In reports can be polled until end of RAM block is reached (address 0x0fff). Continued reads supply all zeros.

    Additionally note that the firmware also respects the number of valid bytes in RAM. So, if by a previous command only the first 256 bytes have been written, it's not possible to read above address 0x00ff. When reading above, the data is all zero.

    {{ simpsol.pagebreak{} }}

    CMD_WRITE_RAM (3)

    Write Data to TransferRAM.

    This Out Feature Report can write a maximum of 58 bytes into TransferRAM. Every Out Feature Report sets the destination address, therefore there is no such like a burst mode here.

    Important: Note that you have to issue a CMD_CLEAR_FLASH_RAM before being able to write to Flash RAM for security reasons!

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d25 1 CMD_WRITE_TRANSFER_RAM
    1 Parameter   1 Not used
    2 Address   2 Start address for write. This is the relative address inside the Flash RAM, first byte has address 0.
    4 Length   2 Number of bytes to write in this report.
    6…63       Not used

    It's possible to write to any address between 0x0000 and 0x0fff. All other writes are ignored and an RETVAL_WRITE_OUTSIDE_RAM error is issued.

    {{ simpsol.pagebreak{} }}

    CMD_CLEAR_RAM (4)

    Clears the complete TransferRAM (4kBytes total) by overwriting all bytes with 0xFF.

    Note that this command was named CMD_CLEAR_FLASH_RAM before, due to historic reasons.

    Important: Note that you have to issue a CMD_CLEAR_FLASH_RAM before being allowed to write to Flash RAM for security reasons! The number of valid data bytes in Transfer RAM is set to 0x1000 by this command, so all data bytes can be read and overwritten afterwards.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d36 1  CMD_CLEAR_TRANSFER_RAM
    1...63        Not used

    {{ simpsol.pagebreak{} }}

    CMD_COPY_FLASH_TO_RAM (5)

    Copies addressed data from a flash sector to the TransferRAM.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d50 1 CMD_COPY_FLASH_TO_RAM
    1 SectorID   1 Sector ID to be read. Refer to sector table.
    2 SourceAddress   4 Relative start address inside the selected sector.
    4 Length   4 Number of bytes to read. Maximum is 0x1000 due to size of TransferRAM.
    6…63       Not used

    {{ simpsol.pagebreak{} }}

    CMD_COPY_RAM_TO_FLASH (51)

    Programs Transfer RAM contents into Flash Memory.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d51 1 CMD_READ_TRANSFER_RAM
    1 SectorID   1 SectorID 
    2 DestinationAddress   4 Start address in the sector to be written.
    6 Length   4 Number of bytes to be written.
    7...63       Not used
    In  Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d51 1  CMD_READ_TRANSFER_RAM
    1 Return Value   1  Return Value refer to return value table

    Destination Address + Length must be < sector end address. Otherwise a RETVAL_WRITE_OUTSIDE_SECTOR is issued.

    {{ simpsol.pagebreak{} }}

    CMD_COPY_DATA_TO_RAM (56)

    Copies a predefined data block into TransferRAM.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d56 1  CMD_COPY_FLASH_TO_RAM
    1 DataID   1  Data ID of data block to be read. Refer to DataID table below.
    6…63        Not used
    List of DataIDs
    DataID DataID Name Content Remark
    0 COPYDATA_ID_RSAENC_AESKEY RSA Encrypted AES Key  
    1 COPYDATA_ID_SIGNED_DOCHASH Signed Document Hash  
    2 COPYDATA_ID_PUBLIC_KEY1 Notaries Key / Public Key 1 The notary's public key in an (undocumented) internal format. This function was written so the user can check if the key is correct.
    3 COPYDATA_ID_CERTIFICATE Pads Certificate The pad's public certificate in X.509 format. In conjunction with the commands for signing (which use the corresponding private key) this command can be used to build a certificate for a document.
    4 COPYDATA_ID_NOTARY_INFO Notary Info Some information about the notary (name, address, etc.) who has the corresponding private key that is needed to decrypt the biodata from the current pad. This is a binary array of a (constant) length of 200 bytes that may contain any character (including newlines, etc.). If not all of the data is used, the end should be filled with space character.
    100 COPYDATA_ID_PLAIN_AESKEY Plain AES Key Debug mode only
    101 COPYDATA_ID_AESENC_AESKEY AES Key AES encrypted with Preliminary DocHash Debug mode only
    102 COPYDATA_ID_PRELIM_DOCHASH Preliminary DocHash Debug mode only
    103 COPYDATA_ID_FINAL_DOCHASH Final Document Hash Debug mode only
    104 COPYDATA_ID_PRIVATE_KEY2 Private Key2 = The Pad's Private Key Debug mode only

    ...

    {{ simpsol.pagebreak{} }}

    CMD_ERASE_FLASH (52)

    Erase a flash sector.

    Access restrictions apply. If a user is not entitled to erase this sector it is denied. Refer to flash sector table to see which sectors allow erasing.

    Out Report
    Address Content Value Length (Bytes) Remarks
    0 Command 0d52 1  CMD_ERASE_FLASH
    1 SectorID   1  Sector ID to be read. Refer to sector table.
    6…63        Not used

    This replaces the commands

    • CMD_CLEAR_CFLASH (23)
    • CMD_CLEAR_WORM (38)

    {{ simpsol.pagebreak{} }}

     
    © Simple Solutions  •  Impressum  •  Wiki powered by Mindtouch