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