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

#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);