1 // stdafx.h : include file for standard system include files, 2 // or project specific include files that are used frequently, but 3 // are changed infrequently 4 // 5 6 #pragma once 7 8 #include "targetver.h" 9 10 #include <stdio.h> 11 #include <memory.h> 12 #include <tchar.h> 13 #include <Windows.h> 14 #include <vector> 15 #include <exception> 16 17 // Nucleo-L476RC based TPM on USB-VCOM 18 #pragma pack(push, 1) 19 #define TPM_VCOM_PORT TEXT("COM6") 20 #define SIGNALMAGIC (0x326d7054) 21 #define MAX_TPM_COMMAND_SIZE (1024) 22 #define TPM_HEADER_SIZE (10) 23 #define CMD_RSP_BUFFER_SIZE (MAX_TPM_COMMAND_SIZE) 24 typedef enum 25 { 26 SignalNothing = 0, 27 SignalShutdown, 28 SignalReset, 29 SignalSetClock, 30 // IN {UINT32 time} 31 SignalCancelOn, 32 SignalCancelOff, 33 SignalCommand, 34 // IN {BYTE Locality, UINT32 InBufferSize, BYTE[InBufferSize] InBuffer} 35 // OUT {UINT32 OutBufferSize, BYTE[OutBufferSize] OutBuffer} 36 SignalResponse, 37 // OUT {UINT32 OutBufferSize, BYTE[OutBufferSize] OutBuffer} 38 } signalCode_t; 39 40 typedef struct 41 { 42 unsigned int magic; 43 signalCode_t signal; 44 unsigned int dataSize; 45 } signalHdr_t; 46 47 typedef union 48 { 49 struct 50 { 51 unsigned int time; 52 } SignalSetClockPayload; 53 struct 54 { 55 unsigned int locality; 56 unsigned int cmdSize; 57 unsigned char cmd[1]; 58 } SignalCommandPayload; 59 } signalPayload_t, *pSignalPayload_t; 60 61 typedef union 62 { 63 signalHdr_t s; 64 unsigned char b[sizeof(signalHdr_t)]; 65 } signalWrapper_t, *pSignalWrapper_t; 66 #pragma pack(pop) 67