Fusion360-Addons/usr/Src/Core/Manager/PhysicManagerDongle.cpp
2021-10-31 19:39:29 +01:00

328 lines
7.1 KiB
C++

#include <StdAfx.h>
#include "vtPhysXAll.h"
#include "pConfig.h"
#ifdef DONGLE_VERSION
#include "matrix32.h"
#endif
long DataIn[256]; /* Buffer to read the Dongle data */
long DataOut[256]; /* Buffer for data to be stored */
long DataBlock[2]; /* Data buffer for Encrypt/Decrypt */
short RetCode; /* Return value */
long API_Version; /* Version number of the Matrix-API */
long DNG_Version; /* Dongle version number */
short DNG_LPTADR; /* Adress of LPT port */
short DNG_Count; /* Number of Dongles connected */
short DNG_Mem; /* Memory size of Dongle */
short DNG_MaxVar; /* Maximum number of data fields */
short AppSlot; /* Application-Slot for Network access */
short i;
int netMode = 0;
short DNG_Port = 1;
long UserCode = 4002529;
int DONGLE_BASIC_VERSION_KEY_1 = 28071977;
int DONGLE_BASIC_VERSION_KEY_2 = 77917082;
int DONGLE_BASIC_VERSION_KEY_1_ENC = 364898188;
int DONGLE_BASIC_VERSION_KEY_2_ENC = 930141357;
int DONGLE_ADVANCED_VERSION_KEY1 = 56143954;
int DONGLE_ADVANCED_VERSION_KEY2 = 45934165;
extern PhysicManager*manager;
#ifdef DONGLE_VERSION
#pragma comment(lib,"matrix32.lib")
void PhysicManager::_initResources(int flags){
// Init Matrix-API
RetCode = Init_MatrixAPI();
if(RetCode < 0)
{
printf("Init_MatrixAPI failed %d \n", RetCode);
exit;
}
API_Version = GetVersionAPI();
if(API_Version == 0)
{
printf("Cannot read API-Version! \n");
Release_MatrixAPI();
return;
}
// Search for number of Dongles at DNG_Port
DNG_Port = Dongle_Find();
DNG_Count = Dongle_Count(DNG_Port);
long test = 0 ;
if(DNG_Count > 0)
{
//manager->m_Context->OutputToConsoleEx("Matrix-Modules at Port %d: %d \n", DNG_Port, DNG_Count);
}
else
{
XString donglePath = _getConfigPath();
//manager->m_Context->OutputToConsoleEx("Cannot find Matrix-Modules at Port %d ! \n", DNG_Port);
//return;
//goto NETWORK_CHECK;
int ret = SetConfig_MatrixNet(1,donglePath.Str());
int DNG_NR = 1;
AppSlot = 1;
ret = LogIn_MatrixNet(UserCode, AppSlot, DNG_NR);
if (ret<=0)
{
MessageBox(NULL,"Couldn't find Dongle!",0,MB_OK|MB_ICONERROR);
this->DongleHasBasicVersion=0;
this->DongleHasAdvancedVersion=0;
//Release_MatrixAPI();
return;
}
netMode = 1;
DNG_Port = Dongle_Find();
DNG_Count = Dongle_Count(DNG_Port);
if(DNG_Count == 0)
{
manager->m_Context->OutputToConsoleEx("Couldn't find Dongle");
}
}
DNG_Mem = Dongle_MemSize(DNG_Count, DNG_Port);
if(DNG_Mem > 0)
{
//manager->m_Context->OutputToConsoleEx("MemSize of Matrix-Module %d at Port %d: %d Bytes \n", DNG_Count, DNG_Port, DNG_Mem);
}
else
{
//manager->m_Context->OutputToConsoleEx("Cannot read MemSize! \n");
Release_MatrixAPI();
return;
}
RetCode = Dongle_ReadData(UserCode, DataIn,6, DNG_Count, DNG_Port);
if(RetCode < 0)
{
m_Context->OutputToConsoleEx("Data Read-Error! \n");
Release_MatrixAPI();
return;
}
DataBlock[0] = 28071977; /* Clear Data */
DataBlock[1] = 77917082; /* Clear Data */
long DataBlockKeyBasic[2];
DataBlockKeyBasic[0] = DataIn[2];
DataBlockKeyBasic[1] = DataIn[3];
long DataBlockKeyAdvanced[2];
DataBlockKeyAdvanced[0] = DataIn[4];
DataBlockKeyAdvanced[1] = DataIn[5];
RetCode = Dongle_DecryptData(UserCode, DataBlockKeyBasic, DNG_Count, DNG_Port);
RetCode = Dongle_DecryptData(UserCode, DataBlockKeyAdvanced, DNG_Count, DNG_Port);
if (netMode)
{
if (DataBlockKeyBasic[0]==DONGLE_BASIC_VERSION_KEY_1_ENC && DataBlockKeyBasic[1]==DONGLE_BASIC_VERSION_KEY_2_ENC )
{
DongleHasBasicVersion= 1;
}
}else
{
if (DataBlockKeyBasic[0]==DONGLE_BASIC_VERSION_KEY_1 && DataBlockKeyBasic[1]==DONGLE_BASIC_VERSION_KEY_2 )
{
DongleHasBasicVersion= 1;
}
if (DataBlockKeyAdvanced[0]==DONGLE_ADVANCED_VERSION_KEY1 && DataBlockKeyAdvanced[1]==DONGLE_ADVANCED_VERSION_KEY2)
{
DongleHasAdvancedVersion=1;
}
}
Release_MatrixAPI();
}
#endif
/*
#ifdef REDIST
#endif
*/
/*
#ifdef DEMO_ONLY
void FindResourceX()
{
}
#endif
*/
/*
#if defined (DONGLE_VERSION)
void PhysicManager::makeDongleTest()
{
//FindResourceX();
}
*/
/*
void MODULE_API FindResourceX()
{
RetCode = Init_MatrixAPI();
if(RetCode < 0)
{
printf("Init_MatrixAPI failed %d \n", RetCode);
exit;
}
API_Version = GetVersionAPI();
if(API_Version == 0)
{
printf("Cannot read API-Version! \n");
Release_MatrixAPI();
return;
}
else
{
// printf("Version of Matrix-API: %d.%d \n", HIWORD(API_Version), LOWORD(API_Version));
// manager->m_Context->OutputToConsoleEx("Version of Matrix-API: %d.%d \n", HIWORD(API_Version), LOWORD(API_Version));
}
int port = Dongle_Find();
DNG_Count = Dongle_Count(port);
DNG_Port = port;
if(DNG_Count > 0)
{
//manager->m_Context->OutputToConsoleEx("Matrix-Modules at Port %d: %d \n", DNG_Port, DNG_Count);
}
else
{
//goto NETWORK
//manager->m_Context->OutputToConsoleEx("Cannot find Matrix-Modules at Port %d ! \n", DNG_Port);
Release_MatrixAPI();
return;
}
DNG_Mem = Dongle_MemSize(DNG_Count, DNG_Port);
if(DNG_Mem > 0)
{
//manager->m_Context->OutputToConsoleEx("MemSize of Matrix-Module %d at Port %d: %d Bytes \n", DNG_Count, DNG_Port, DNG_Mem);
}
else
{
//manager->m_Context->OutputToConsoleEx("Cannot read MemSize! \n");
Release_MatrixAPI();
return;
}
RetCode = Dongle_ReadData(UserCode, DataIn,6, DNG_Count, DNG_Port);
if(RetCode < 0)
{
manager->m_Context->OutputToConsoleEx("Data Read-Error! \n");
Release_MatrixAPI();
return;
}
DataBlock[0] = 28071977;
DataBlock[1] = 77917082;
long DataBlockKeyBasic[2];
DataBlockKeyBasic[0] = DataIn[2];
DataBlockKeyBasic[1] = DataIn[3];
long DataBlockKeyAdvanced[2];
DataBlockKeyAdvanced[0] = DataIn[4];
DataBlockKeyAdvanced[1] = DataIn[5];
RetCode = Dongle_DecryptData(UserCode, DataBlockKeyBasic, DNG_Count, DNG_Port);
RetCode = Dongle_DecryptData(UserCode, DataBlockKeyAdvanced, DNG_Count, DNG_Port);
//manager->m_Context->OutputToConsoleEx("Decrypted Data: %lu %lu \n", DataBlockKeyBasic[0], DataBlockKeyBasic[1]);
//manager->m_Context->OutputToConsoleEx("Decrypted Data: %lu %lu \n", DataBlockKeyAdvanced[0], DataBlockKeyAdvanced[1]);
if (DataBlockKeyBasic[0]==DONGLE_BASIC_VERSION_KEY_1 && DataBlockKeyBasic[1]==DONGLE_BASIC_VERSION_KEY_2 )
{
// DongleHasBasicVersion= 1;
}
if (DataBlockKeyAdvanced[0]==DONGLE_ADVANCED_VERSION_KEY1 && DataBlockKeyAdvanced[1]==DONGLE_ADVANCED_VERSION_KEY2)
{
// DongleHasAdvancedVersion= 1;
}
//manager->m_Context->OutputToConsoleEx("Clear Data: %lu %lu \n", DataBlock[0], DataBlock[1]);
//manager->m_Context->OutputToConsoleEx("Encrypted Data: %lu %lu \n", DataBlock[0], DataBlock[1]);
Release_MatrixAPI();
}
#endif
*/