You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.9 KiB
79 lines
1.9 KiB
4 months ago
|
#define SIGNALMAGIC (0x326d7054) //Tpm2
|
||
|
#define MAX_TPM_MESSAGE_SIZE (sizeof(unsigned int) + 2048)
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
SignalNothing = 0,
|
||
|
SignalShutdown,
|
||
|
SignalReset,
|
||
|
SignalSetClock,
|
||
|
// IN {UINT32 time}
|
||
|
SignalCancelOn,
|
||
|
SignalCancelOff,
|
||
|
SignalCommand,
|
||
|
// IN {BYTE Locality, UINT32 InBufferSize, BYTE[InBufferSize] InBuffer}
|
||
|
// OUT {UINT32 OutBufferSize, BYTE[OutBufferSize] OutBuffer}
|
||
|
SignalResponse,
|
||
|
// OUT {UINT32 OutBufferSize, BYTE[OutBufferSize] OutBuffer}
|
||
|
} signalCode_t;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned int magic;
|
||
|
signalCode_t signal;
|
||
|
unsigned int dataSize;
|
||
|
} signalHdr_t;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
unsigned int time;
|
||
|
} SignalSetClockPayload;
|
||
|
struct
|
||
|
{
|
||
|
unsigned int locality;
|
||
|
unsigned int cmdSize;
|
||
|
unsigned char cmd[1];
|
||
|
} SignalCommandPayload;
|
||
|
} signalPayload_t, *pSignalPayload_t;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
signalHdr_t s;
|
||
|
unsigned char b[sizeof(signalHdr_t)];
|
||
|
} signalWrapper_t, *pSignalWrapper_t;
|
||
|
|
||
|
typedef struct tpmOperationsFlags_t
|
||
|
{
|
||
|
unsigned char resetRequested : 1;
|
||
|
unsigned char powerOffRequested : 1;
|
||
|
unsigned char executionRequested : 1;
|
||
|
unsigned char responseRequested : 1;
|
||
|
} tpmOperationsFlags_t;
|
||
|
|
||
|
typedef struct tpmOperation_t
|
||
|
{
|
||
|
tpmOperationsFlags_t flags;
|
||
|
int cmdSize;
|
||
|
int receivingCmd;
|
||
|
int rspSize;
|
||
|
unsigned char msgBuf[MAX_TPM_MESSAGE_SIZE];
|
||
|
} tpmOperation_t;
|
||
|
|
||
|
extern volatile tpmOperation_t tpmOp;
|
||
|
|
||
|
int BlueButtonTransitionDetected(void);
|
||
|
void SetDutyCycleIndicator(bool on);
|
||
|
void KillUSBLink(void);
|
||
|
void SetRealTimeClock(time_t tm);
|
||
|
void ReadMcuInfo(unsigned char* serial, uint16_t *flashSize, uint16_t *mcuType, uint16_t *mcuRev);
|
||
|
void PerformSystemReset(void);
|
||
|
void HAL_Delay(uint32_t Delay);
|
||
|
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);
|
||
|
|
||
|
bool TpmInitializeDevice(void);
|
||
|
bool TpmOperationsLoop(void);
|
||
|
void TpmConnectionReset(void);
|
||
|
bool TpmSignalEvent(uint8_t* Buf, uint32_t *Len);
|