From 75c9ea1727c1fd7983a180b9f1da541c5f266cf3 Mon Sep 17 00:00:00 2001 From: JKoenig Date: Mon, 28 Oct 2019 12:19:55 +0100 Subject: [PATCH 1/2] - Initial Windows port, tested with Qt_5_8_0_MSVC2013 and QT_5_9_8_GCC. - Includes DATA MODUL EAPI DLLs V1.2.2.0 --- EAPI/Dmo/x86/EApi_1.dll | Bin 0 -> 89600 bytes EAPI/Dmo/x86/EApi_1.lib | Bin 0 -> 9518 bytes EAPI/Dmo/x86_64/EApi_1.dll | Bin 0 -> 104960 bytes EAPI/Dmo/x86_64/EApi_1.lib | Bin 0 -> 8930 bytes EApiOsNTC.c | 59 +++++++++++++ gpio.cpp | 2 +- gpio.h | 6 ++ gui-demo.pro | 20 +++++ i2c.cpp | 59 +++++++++---- i2c.h | 7 ++ include/EApi.h | 5 ++ include/WinNt/EApiCommon.h | 64 ++++++++++++++ include/WinNt/EApiOs.h | 173 +++++++++++++++++++++++++++++++++++++ include/WinNt/EApiOsNTC.h | 50 +++++++++++ pwm.cpp | 4 +- pwm.h | 4 + storage.h | 3 + 17 files changed, 437 insertions(+), 19 deletions(-) create mode 100644 EAPI/Dmo/x86/EApi_1.dll create mode 100644 EAPI/Dmo/x86/EApi_1.lib create mode 100644 EAPI/Dmo/x86_64/EApi_1.dll create mode 100644 EAPI/Dmo/x86_64/EApi_1.lib create mode 100644 EApiOsNTC.c create mode 100644 include/WinNt/EApiCommon.h create mode 100644 include/WinNt/EApiOs.h create mode 100644 include/WinNt/EApiOsNTC.h diff --git a/EAPI/Dmo/x86/EApi_1.dll b/EAPI/Dmo/x86/EApi_1.dll new file mode 100644 index 0000000000000000000000000000000000000000..6d69889667afe12142701d5a609bc1abe3d9e9e4 GIT binary patch literal 89600 zcmeFae|%KM)jxhWyPGVqVHZgtN|2z7QiB>@qQoVbU^aT(qHL5-{d|-e>OaW;arw z=llA;KL35-m3!x&nK^Uj%$b=pXU@!4eD^`YC)HmFHd&8|i$oc-QcinZjnDf2cavG$&a_+b*r{tEZoFCl1 z>b5J=)5kiZsE@Wc0^ec}EUP56HIh38lNgul10=)=1>;}0ty=jm==@h09s zetye}pY!(%D<0$TJ^cM>k(3>k26>W z;V2+a=+H;5#oLa*KK^az;S@ng)uZEY;TeO@M8H#oB77hd<%_@d&y{lx!cs7MH!|W` z1YzYB4XbVyZxw`EFXDkySc<>n_)GX#1oE!XlL^)<5#d3#&%=8*-Uv{|6lO`2M4^JoVR-?0>^IQN`rl2 zfn6Lghb_T=>GW=`Pt$7K)gqH(aE5E!4<0<&YETb1hs8;@z2Rbc@Ji7v4=$Hd)WfZY z=CJgsx{uN%{`0E&p1Tb8V87_qM2B5n;IOmZnx=X1m93UIGJweAe;5UO*+34)AkmSh z_W6%qVX$jFC;I@

G|2a+E}2?@t#5d4HamkKK{Pp{G~LW; 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 UYOWrvuzAFv2>Hl(!cTzvAK0psZU6uP literal 0 HcmV?d00001 diff --git a/EAPI/Dmo/x86_64/EApi_1.dll b/EAPI/Dmo/x86_64/EApi_1.dll new file mode 100644 index 0000000000000000000000000000000000000000..09ad03278e75f8f163f56c63e10ef5089d53f132 GIT binary patch literal 104960 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

%^ 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 literal 0 HcmV?d00001 diff --git a/EApiOsNTC.c b/EApiOsNTC.c new file mode 100644 index 0000000..194908f --- /dev/null +++ b/EApiOsNTC.c @@ -0,0 +1,59 @@ +/* + * + *+========================================================================= + *I Project Name: EApiDK Embedded Application Development Kit + *+========================================================================= + *I $HeadURL: https://eapidk.svn.sourceforge.net/svnroot/eapidk/trunk/lib/WINNT/EApiOsNTC.c $ + *+========================================================================= + *I Copyright: Copyright (c) 2002-2009, Kontron Embedded Modules GmbH + *I Author: John Kearney, John.Kearney@kontron.com + *I + *I License: All rights reserved. This program and the accompanying + *I materials are licensed and made available under the + *I terms and conditions of the BSD License which + *I accompanies this distribution. The full text of the + *I license may be found at + *I http://opensource.org/licenses/bsd-license.php + *I + *I THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN " + *I AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF + *I ANY KIND, EITHER EXPRESS OR IMPLIED. + *I + *I Description: Auto Created for EApiOsNTC.c + *I + *+------------------------------------------------------------------------- + *I + *I File Name : EApiOsNTC.c + *I File Location : lib\WINNT + *I Last committed : $Revision: 38 $ + *I Last changed by : $Author: dethrophes $ + *I Last changed date : $Date: 2010-01-26 07:48:22 +0100 (Di, 26. Jan 2010) $ + *I ID : $Id: EApiOsNTC.c 38 2010-01-26 06:48:22Z dethrophes $ + *I + *+========================================================================= + * + */ +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +void usleep(unsigned long us) +{ + LARGE_INTEGER cnt1; + LARGE_INTEGER cnt2; + QueryPerformanceCounter (&cnt1); + QueryPerformanceFrequency (&cnt2); + cnt1.QuadPart+=(us*cnt2.QuadPart)/1000000; + do{ + QueryPerformanceCounter (&cnt2); + }while(cnt1.QuadPart>cnt2.QuadPart); + return ; +} + +#ifdef __cplusplus +} +#endif diff --git a/gpio.cpp b/gpio.cpp index acd91f8..8a3d873 100644 --- a/gpio.cpp +++ b/gpio.cpp @@ -1,6 +1,6 @@ #include "gpio.h" -#include + #include const EApiId_t EApiGpioDevices[]={ diff --git a/gpio.h b/gpio.h index e2ce431..c59d355 100644 --- a/gpio.h +++ b/gpio.h @@ -9,6 +9,12 @@ #include #include +#ifdef _MSC_VER + #include +#else + #include +#endif + class gpio: public QWidget { Q_OBJECT diff --git a/gui-demo.pro b/gui-demo.pro index ea65635..b828004 100644 --- a/gui-demo.pro +++ b/gui-demo.pro @@ -23,6 +23,8 @@ SOURCES += main.cpp\ temperatureBar.cpp \ pwm.cpp +win32: SOURCES += EApiOsNTC.c + HEADERS += mainwindow.h \ boardinfo.h \ realtimeinfo.h \ @@ -42,6 +44,24 @@ equals(LIBPATH, "") { } unix:!macx: LIBS += -L$$LIBPATH -lEApi +# Windows, tested w/ MSVC compilers +win32: { + TARGET_ARCH = $$QMAKE_TARGET.arch + DESTDIR = $$PWD/Bin/$$TARGET_ARCH/ + TARGET = $$TARGET-$$TARGET_ARCH + EAPI = EAPI/Dmo + LIBS += -L$$PWD/$${EAPI}/$$TARGET_ARCH/ -lEApi_1 + DEPLOY_COMMAND = windeployqt + DEPLOY_TARGET = $$shell_quote($$shell_path($${DESTDIR})) + EAPI_DLL = $$PWD/$${EAPI}/$$TARGET_ARCH/EApi_1.dll + CP_EAPI = $$QMAKE_COPY $$shell_quote($$shell_path($${EAPI_DLL})) $$shell_quote($$shell_path($${DESTDIR})) $$escape_expand(\\n\\t) + QMAKE_POST_LINK = $${CP_EAPI} + QMAKE_POST_LINK += $${DEPLOY_COMMAND} $${DEPLOY_TARGET} + + INCLUDEPATH += $$PWD/include/WinNt + DEPENDPATH += $$PWD/include/WinNt +} + INCLUDEPATH += $$PWD/include DEPENDPATH += $$PWD/include diff --git a/i2c.cpp b/i2c.cpp index 49d3aa6..c37b228 100644 --- a/i2c.cpp +++ b/i2c.cpp @@ -1,9 +1,11 @@ #include "i2c.h" +#ifndef _MSC_VER #include +#endif #include #include #include -#include + #include @@ -24,12 +26,7 @@ i2c::i2c(QWidget *parent) timer = new QTimer(this); - int tempresult = find_eeprom(); - if (tempresult == -1 ) - base_addr = 0; - else - base_addr = tempresult; - + base_addr = find_eeprom(); readWriteByteRadioButton = new QRadioButton("Read/Write Register"); readWriteByteRadioButton->setFont(fontvalue); @@ -55,7 +52,7 @@ i2c::i2c(QWidget *parent) protocolGroup->setFont(fontlabel); protocolGroup->setLayout(protocolLayout); - if (base_addr == 0) /* no i2c*/ + if (base_addr == -1) /* no i2c*/ protocolGroup->setEnabled(false); /*************************************************/ @@ -65,7 +62,7 @@ i2c::i2c(QWidget *parent) i2cID = new QComboBox; i2cID->setFont(fontvalue); - if (base_addr == 0) /* no i2c*/ + if (base_addr == -1) /* no i2c*/ { i2cIDLabel->setStyleSheet("color : red"); i2cID->addItem("-"); @@ -105,7 +102,7 @@ i2c::i2c(QWidget *parent) deviceGroup->setFont(fontlabel); deviceGroup->setLayout(deviceLayout); - if (base_addr == 0) /* no i2c*/ + if (base_addr == -1) /* no i2c*/ deviceGroup->setEnabled(false); /***********************************************/ @@ -213,7 +210,7 @@ i2c::i2c(QWidget *parent) controlGroup->setFont(fontlabel); controlGroup->setLayout(parameterGrid); - if (base_addr == 0) /* no i2c*/ + if (base_addr == -1) /* no i2c*/ controlGroup->setEnabled(false); /******************************************************/ @@ -228,8 +225,9 @@ i2c::i2c(QWidget *parent) unsigned char TmpStrBuf; - EApiStatus_t StatusCode; - StatusCode=EApiI2CReadTransfer(base_addr, 0x48, EAPI_I2C_ENC_STD_CMD(0),&TmpStrBuf, 1, 1); + EApiStatus_t StatusCode = EAPI_STATUS_ERROR; + if (base_addr != -1) + StatusCode=EApiI2CReadTransfer(base_addr, 0x48, EAPI_I2C_ENC_STD_CMD(0),&TmpStrBuf, 1, 1); if(EAPI_TEST_SUCCESS(StatusCode)) temperatureButton->setEnabled(true); @@ -244,7 +242,7 @@ i2c::i2c(QWidget *parent) demoGroup->setFont(fontlabel); demoGroup->setLayout(demoGrid); - if (base_addr == 0) /* no i2c*/ + if (base_addr == -1) /* no i2c*/ demoGroup->setEnabled(false); grid = new QGridLayout; @@ -587,8 +585,9 @@ void i2c::temperatureClicked() void i2c::timeoutTimer() { unsigned char TmpStrBuf; - EApiStatus_t StatusCode; - StatusCode=EApiI2CReadTransfer(base_addr, 0x48, EAPI_I2C_ENC_STD_CMD(0),&TmpStrBuf, 1, 1); + EApiStatus_t StatusCode = EAPI_STATUS_ERROR; + if (base_addr != -1) + StatusCode=EApiI2CReadTransfer(base_addr, 0x48, EAPI_I2C_ENC_STD_CMD(0),&TmpStrBuf, 1, 1); if(EAPI_TEST_SUCCESS(StatusCode)) { @@ -619,6 +618,7 @@ void i2c::getInput() } /**************************************/ +#ifndef _MSC_VER struct i2c_adap* i2c::more_adapters(struct i2c_adap *adapters, int n) { struct i2c_adap *new_adapters; @@ -635,6 +635,7 @@ struct i2c_adap* i2c::more_adapters(struct i2c_adap *adapters, int n) struct i2c_adap* i2c::gather_i2c_busses(void) { +#ifndef _MSC_VER char s[120]; struct dirent *de, *dde; DIR *dir, *ddir; @@ -742,6 +743,20 @@ struct i2c_adap* i2c::gather_i2c_busses(void) closedir(dir); done: +#else //_MSC_VER + struct i2c_adap *adapters; + EApiStatus_t StatusCode; + uint32_t MaxBlkLen = 0; + //EApiId_t i2cBus; + + adapters = (struct i2c_adap*)calloc(1, sizeof(struct i2c_adap)); + StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_EXTERNAL, &MaxBlkLen); + if(EAPI_TEST_SUCCESS(StatusCode)) { + adapters[0].nr = -1; + adapters[0].name = strdup(I2C_DMEC); + } +#endif + return adapters; } @@ -753,9 +768,11 @@ void i2c::free_adapters(struct i2c_adap *adapters) free(adapters[i].name); free(adapters); } +#endif // _MSC_VER int i2c::find_eeprom(void) { +#ifndef _MSC_VER struct i2c_adap *adapters = NULL; int count; int result = -1; @@ -774,6 +791,16 @@ int i2c::find_eeprom(void) } free_adapters(adapters); return result; +#else + EApiStatus_t StatusCode; + uint32_t MaxBlkLen = 0; + + StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_EXTERNAL, &MaxBlkLen); + if(EAPI_TEST_SUCCESS(StatusCode)) + return (EAPI_ID_I2C_EXTERNAL); + + return (-1); +#endif // _MSC_VER } diff --git a/i2c.h b/i2c.h index de2faf6..de6d568 100644 --- a/i2c.h +++ b/i2c.h @@ -15,6 +15,13 @@ #include #include +#ifndef _MSC_VER + #include +#else + #include + #include +#endif + #include "temperatureBar.h" struct i2c_adap { diff --git a/include/EApi.h b/include/EApi.h index efc810b..a1fc964 100644 --- a/include/EApi.h +++ b/include/EApi.h @@ -34,6 +34,11 @@ * */ +#ifdef _MSC_VER + #include + #include +#endif + #ifndef _EAPI_H_ #define _EAPI_H_ diff --git a/include/WinNt/EApiCommon.h b/include/WinNt/EApiCommon.h new file mode 100644 index 0000000..b394e68 --- /dev/null +++ b/include/WinNt/EApiCommon.h @@ -0,0 +1,64 @@ +/* + * + *+========================================================================= + *I Project Name: EApiDK Embedded Application Development Kit + *+========================================================================= + *I $HeadURL: http://svn.code.sf.net/p/eapidk/code/trunk/include/EApiCommon.h $ + *+========================================================================= + *I Copyright: Copyright (c) 2009-2010, PICMG + *I Author: John Kearney, John.Kearney@kontron.com + *I + *I License: All rights reserved. This program and the accompanying + *I materials are licensed and made available under the + *I terms and conditions of the BSD License which + *I accompanies this distribution. The full text of the + *I license may be found at + *I http://opensource.org/licenses/bsd-license.php + *I + *I THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN " + *I AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF + *I ANY KIND, EITHER EXPRESS OR IMPLIED. + *I + *I Description: Auto Created for EApiCommon.h + *I + *+------------------------------------------------------------------------- + *I + *I File Name : EApiCommon.h + *I File Location : include + *I Last committed : $Revision: 74 $ + *I Last changed by : $Author: dethrophes $ + *I Last changed date : $Date: 2010-06-23 21:26:50 +0200 (Wed, 23 Jun 2010) $ + *I ID : $Id: EApiCommon.h 74 2010-06-23 19:26:50Z dethrophes $ + *I + *+========================================================================= + * + */ +/* EApi Common Header */ +#ifndef _EAPICOMMON_H_ +#define _EAPICOMMON_H_ +/* + * ALL Of these MACROS can be overridden by MACROS + * in the OS Specific Header File EApiOs.h + */ +#ifndef ELEMENT_SIZE +# define ELEMENT_SIZE(x) (sizeof((x)[0])) +#endif +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(x) (sizeof(x)/ELEMENT_SIZE(x)) +#endif +#ifndef STRLEN +# define STRLEN(x) (ARRAY_SIZE(x)- ARRAY_SIZE("")) +#endif + +#define EAPI_CREATE_PTR(Base, ByteOffset, PtrType) \ + ((PtrType)(((uint8_t*)(Base))+(ByteOffset))) + +#define EAPI_GET_PTR_OFFSET(Ptr1, Ptr2) \ + ((unsigned long)(((const uint8_t* const)(Ptr1))-((const uint8_t*const)(Ptr2)))) + +#ifndef STRICT_VALIDATION +# define STRICT_VALIDATION 2 +#endif + +#endif /* _EAPICOMMON_H_ */ + diff --git a/include/WinNt/EApiOs.h b/include/WinNt/EApiOs.h new file mode 100644 index 0000000..a510154 --- /dev/null +++ b/include/WinNt/EApiOs.h @@ -0,0 +1,173 @@ +/* + * + *+========================================================================= + *I Project Name: EApiDK Embedded Application Development Kit + *+========================================================================= + *I $HeadURL: http://svn.code.sf.net/p/eapidk/code/trunk/include/linux/EApiOs.h $ + *+========================================================================= + *I Copyright: Copyright (c) 2002-2009, Kontron Embedded Modules GmbH + *I Author: John Kearney, John.Kearney@kontron.com + *I + *I License: All rights reserved. This program and the accompanying + *I materials are licensed and made available under the + *I terms and conditions of the BSD License which + *I accompanies this distribution. The full text of the + *I license may be found at + *I http://opensource.org/licenses/bsd-license.php + *I + *I THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN " + *I AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF + *I ANY KIND, EITHER EXPRESS OR IMPLIED. + *I + *I Description: Auto Created for EApiOs.h + *I + *+------------------------------------------------------------------------- + *I + *I File Name : EApiOs.h + *I File Location : include\linux + *I Last committed : $Revision: 72 $ + *I Last changed by : $Author: dethrophes $ + *I Last changed date : $Date: 2010-06-20 04:28:21 +0200 (Sun, 20 Jun 2010) $ + *I ID : $Id: EApiOs.h 72 2010-06-20 02:28:21Z dethrophes $ + *I + *+========================================================================= + * + */ +/* Windows NT Common Header */ +#ifndef _EAPIOS_H_ +#define _EAPIOS_H_ + +#ifndef __IN +# define __IN +#endif + +#include +#include +#include +#ifndef _MSC_VER + #include +#endif +#include +#include +#include +#include +#include + + + +#if defined _WIN32 || defined __CYGWIN__ + #ifdef EAPI_BUILDING_LIB + #ifdef __GNUC__ + #define EAPI_CALLTYPE __attribute__((dllexport)) + #else + #define EAPI_CALLTYPE __declspec(dllexport) /* Note: actually gcc seems to also supports this syntax. */ + #endif + #else + #ifdef __GNUC__ + #define EAPI_CALLTYPE __attribute__((dllimport)) + #else + #ifdef _WIN64 + #define EAPI_CALLTYPE __declspec(dllimport) /* Note: actually gcc seems to also supports this syntax. */ + #else + #define EAPI_CALLTYPE __stdcall /* DMO 2019-09-18 17:50:00 jank Note: use WINAPI calling convention for 32Bit DLL exports. */ + #endif + #endif + #endif +#else + #if __GNUC__ >= 4 + #define EAPI_CALLTYPE __attribute__ ((visibility("default"))) + #else + #define EAPI_CALLTYPE + #endif +#endif +#ifdef __GNUC__ +#ifdef __i386__ +# ifndef __fastcall +# define __fastcall __attribute__((fastcall)) +# endif +# ifndef __stdcall +# define __stdcall __attribute__((stdcall)) +# endif +# ifndef __cdecl +# define __cdecl __attribute__((cdecl)) +# endif +#else +# ifndef __fastcall +# define __fastcall +# endif +# ifndef __stdcall +# define __stdcall +# endif +# ifndef __cdecl +# define __cdecl +# endif +#endif +# ifndef _fastcall +# define _fastcall __fastcall +# endif +# ifndef _stdcall +# define _stdcall __stdcall +# endif +# ifndef _cdecl +# define _cdecl __cdecl +# endif + +#endif + +#define EAPI_PRINTF_ARG(Format, Arg) __attribute__((format(printf, Format, Arg))) +void EApiSleepns(unsigned long ns); +#define EAPI_EMUL_DELAY_NS(x) EApiSleepns(x) + +#ifndef EApiSleep +# define EApiSleep(x) usleep(x*1000) +#endif + + + +#ifdef UNICODE +//#ifndef TEXT +//# define TEXT(x) Lx +//#endif +# define EAPI_strlen wcslen +# define EAPI_strnlen wcsnlen +# define EAPI_strncpy wcsncpy +# define EAPI_vsnprintf vsnwprintf +# define EAPI_fprintf fwprintf +# define EAPI_printf wprintf +# define EAPI_fopen _wfopen +#else +//#ifndef TEXT +//# define TEXT(x) x +//#endif +# define EAPI_strlen strlen +# define EAPI_strnlen strnlen +# define EAPI_strncpy strncpy +# define EAPI_vsnprintf vsnprintf +# define EAPI_fprintf fprintf +# define EAPI_fopen fopen +# define EAPI_printf printf +#endif + +#define EAPI_vsnprintfA vsnprintf +#define EAPI_strdup strdup +#define EAPI_strncpyA strncpy + +#define _strdup strdup + +#ifdef _MSC_VER + #include + #include + #include "inttypes.h" + + #ifndef NAME_MAX + #define NAME_MAX 255 + #endif + + #define snprintf _snprintf + #define strcasecmp _stricmp + #define strncasecmp _strnicmp +#endif // _MSC_VERS + +#endif /* _EAPIOS_H_ */ + + diff --git a/include/WinNt/EApiOsNTC.h b/include/WinNt/EApiOsNTC.h new file mode 100644 index 0000000..43f5156 --- /dev/null +++ b/include/WinNt/EApiOsNTC.h @@ -0,0 +1,50 @@ +/* + * + *+========================================================================= + *I Project Name: EApiDK Embedded Application Development Kit + *+========================================================================= + *I $HeadURL: https://eapidk.svn.sourceforge.net/svnroot/eapidk/trunk/lib/WINNT/EApiOsNTC.c $ + *+========================================================================= + *I Copyright: Copyright (c) 2002-2009, Kontron Embedded Modules GmbH + *I Author: John Kearney, John.Kearney@kontron.com + *I + *I License: All rights reserved. This program and the accompanying + *I materials are licensed and made available under the + *I terms and conditions of the BSD License which + *I accompanies this distribution. The full text of the + *I license may be found at + *I http://opensource.org/licenses/bsd-license.php + *I + *I THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN " + *I AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF + *I ANY KIND, EITHER EXPRESS OR IMPLIED. + *I + *I Description: Auto Created for EApiOsNTC.c + *I + *+------------------------------------------------------------------------- + *I + *I File Name : EApiOsNTC.c + *I File Location : lib\WINNT + *I Last committed : $Revision: 38 $ + *I Last changed by : $Author: dethrophes $ + *I Last changed date : $Date: 2010-01-26 07:48:22 +0100 (Di, 26. Jan 2010) $ + *I ID : $Id: EApiOsNTC.c 38 2010-01-26 06:48:22Z dethrophes $ + *I + *+========================================================================= + * + */ +#ifndef _EAPIOSNTC_H_ +#define _EAPIOSNTC_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +void usleep(unsigned long us); + +#ifdef __cplusplus +} +#endif + +#endif //_EAPIOSNTC_H_ diff --git a/pwm.cpp b/pwm.cpp index b9222f6..5add658 100644 --- a/pwm.cpp +++ b/pwm.cpp @@ -1,5 +1,5 @@ #include "pwm.h" -#include + #include static const QStandardItemModel* model; @@ -23,7 +23,7 @@ pwm::pwm(QWidget *parent) fontvalue.setBold(false); fontvalue.setPointSize(11); - EApiStatus_t StatusCode; + //EApiStatus_t StatusCode; QStringList list; pwmch0 = new QRadioButton("PWM Channel0"); diff --git a/pwm.h b/pwm.h index a86cd88..2ddf0a2 100644 --- a/pwm.h +++ b/pwm.h @@ -13,6 +13,10 @@ #include #include +#ifndef _MSC_VER + #include +#endif + class pwm: public QWidget { Q_OBJECT diff --git a/storage.h b/storage.h index 52e4683..bec8ed7 100644 --- a/storage.h +++ b/storage.h @@ -10,6 +10,9 @@ #include #include +#ifdef _MSC_VER + #include +#endif class storage: public QWidget { From 51184d0b8e227215e4e3a9a4027829005e276b8c Mon Sep 17 00:00:00 2001 From: JanK Date: Mon, 20 Jul 2020 18:41:06 +0200 Subject: [PATCH 2/2] Reworked code to deal with situations where DMEC I2C bus numbers are not consecutive. Fixed some old style cast warning messages. --- i2c.cpp | 98 ++++++++++++++++++++++++++++++++------------------------- i2c.h | 5 +-- 2 files changed, 59 insertions(+), 44 deletions(-) diff --git a/i2c.cpp b/i2c.cpp index c37b228..97fafdc 100644 --- a/i2c.cpp +++ b/i2c.cpp @@ -26,7 +26,6 @@ i2c::i2c(QWidget *parent) timer = new QTimer(this); - base_addr = find_eeprom(); readWriteByteRadioButton = new QRadioButton("Read/Write Register"); readWriteByteRadioButton->setFont(fontvalue); @@ -52,8 +51,6 @@ i2c::i2c(QWidget *parent) protocolGroup->setFont(fontlabel); protocolGroup->setLayout(protocolLayout); - if (base_addr == -1) /* no i2c*/ - protocolGroup->setEnabled(false); /*************************************************/ i2cIDLabel = new QLabel("I2C Select:"); @@ -61,20 +58,16 @@ i2c::i2c(QWidget *parent) i2cID = new QComboBox; i2cID->setFont(fontvalue); - - if (base_addr == -1) /* no i2c*/ + + base_addr = uint32_t(add_i2c_busses(i2cID)); + if (base_addr == uint32_t(-1)) + protocolGroup->setEnabled(false); + if (base_addr == uint32_t(-1)) /* no i2c*/ { i2cIDLabel->setStyleSheet("color : red"); i2cID->addItem("-"); } - else - { - i2cID->addItem(QString::number(base_addr)); - i2cID->addItem(QString::number(base_addr+1)); - i2cID->addItem(QString::number(base_addr+2)); - } - i2cBus = base_addr; connect(i2cID , SIGNAL(currentIndexChanged(int)),this,SLOT(handleI2CselectionChanged(int))); slaveLabel = new QLabel("Slave Address(Hex, ex. A5):"); @@ -102,7 +95,7 @@ i2c::i2c(QWidget *parent) deviceGroup->setFont(fontlabel); deviceGroup->setLayout(deviceLayout); - if (base_addr == -1) /* no i2c*/ + if (base_addr == uint32_t(-1)) /* no i2c*/ deviceGroup->setEnabled(false); /***********************************************/ @@ -210,7 +203,7 @@ i2c::i2c(QWidget *parent) controlGroup->setFont(fontlabel); controlGroup->setLayout(parameterGrid); - if (base_addr == -1) /* no i2c*/ + if (base_addr == uint32_t(-1)) /* no i2c*/ controlGroup->setEnabled(false); /******************************************************/ @@ -226,7 +219,7 @@ i2c::i2c(QWidget *parent) unsigned char TmpStrBuf; EApiStatus_t StatusCode = EAPI_STATUS_ERROR; - if (base_addr != -1) + if (base_addr != uint32_t(-1)) StatusCode=EApiI2CReadTransfer(base_addr, 0x48, EAPI_I2C_ENC_STD_CMD(0),&TmpStrBuf, 1, 1); if(EAPI_TEST_SUCCESS(StatusCode)) @@ -242,7 +235,7 @@ i2c::i2c(QWidget *parent) demoGroup->setFont(fontlabel); demoGroup->setLayout(demoGrid); - if (base_addr == -1) /* no i2c*/ + if (base_addr == (uint32_t(-1)) /* no i2c*/ demoGroup->setEnabled(false); grid = new QGridLayout; @@ -290,7 +283,7 @@ void i2c::timingSelected(bool checked) } void i2c::handleI2CselectionChanged(int index) { - i2cBus = i2cID->itemText(index).toInt(); + i2cBus = i2cID->itemData(index).toInt(); } void i2c::slaveChanged(QString text) { @@ -635,7 +628,6 @@ struct i2c_adap* i2c::more_adapters(struct i2c_adap *adapters, int n) struct i2c_adap* i2c::gather_i2c_busses(void) { -#ifndef _MSC_VER char s[120]; struct dirent *de, *dde; DIR *dir, *ddir; @@ -743,20 +735,6 @@ struct i2c_adap* i2c::gather_i2c_busses(void) closedir(dir); done: -#else //_MSC_VER - struct i2c_adap *adapters; - EApiStatus_t StatusCode; - uint32_t MaxBlkLen = 0; - //EApiId_t i2cBus; - - adapters = (struct i2c_adap*)calloc(1, sizeof(struct i2c_adap)); - StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_EXTERNAL, &MaxBlkLen); - if(EAPI_TEST_SUCCESS(StatusCode)) { - adapters[0].nr = -1; - adapters[0].name = strdup(I2C_DMEC); - } -#endif - return adapters; } @@ -770,37 +748,73 @@ void i2c::free_adapters(struct i2c_adap *adapters) } #endif // _MSC_VER -int i2c::find_eeprom(void) +int i2c::add_i2c_busses(QComboBox *i2cBusComboBox) { #ifndef _MSC_VER struct i2c_adap *adapters = NULL; - int count; int result = -1; + int i; + int mux_channel; + char mux[NAME_MAX] = "\0"; + adapters = gather_i2c_busses(); if (adapters == NULL) { fprintf(stderr, "Error: Out of memory!\n"); - return result; + return (result); } - for (count = 0; adapters[count].name; count++) { - if (!strncmp(adapters[count].name, I2C_DMEC,8)) + + for (i = 0; adapters[i].name; i++) { + if (!strncmp(adapters[i].name, I2C_DMEC,8)) { - result = adapters[count].nr +1; + // found DMEC base instance now get all mux busses and add them to the Combobox + sprintf(mux, "i2c-%d-mux", adapters[i].nr); break; } } + + if (mux[0] != 0) { + char c[NAME_MAX] = "\0"; + int index = 0; + for (i = 0; adapters[i].name; i++) { + if (!strncmp(adapters[i].name, mux,strlen(mux))) + { + // found DMEC mux bus, get channel number + if (sscanf(adapters[i].name, MUX_CHANNEL, c, &mux_channel)) { + i2cBusComboBox->addItem(QString::number(adapters[i].nr) + " (CH" + QString::number(mux_channel) + ")"); + i2cBusComboBox->setItemData(index++, adapters[i].nr); + if (mux_channel == 0) { + result = adapters[i].nr; + } + } + } + } + + } + free_adapters(adapters); - return result; -#else + return (result); +#else // _MSC_VER EApiStatus_t StatusCode; uint32_t MaxBlkLen = 0; + int result = -1; StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_EXTERNAL, &MaxBlkLen); + if(EAPI_TEST_SUCCESS(StatusCode)) { + i2cBusComboBox->addItem(QString::number(EAPI_ID_I2C_EXTERNAL)); + result = EAPI_ID_I2C_EXTERNAL; + } + + StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_LVDS_1, &MaxBlkLen); if(EAPI_TEST_SUCCESS(StatusCode)) - return (EAPI_ID_I2C_EXTERNAL); + i2cBusComboBox->addItem(QString::number(EAPI_ID_I2C_LVDS_1)); - return (-1); + StatusCode = EApiI2CGetBusCap(EAPI_ID_I2C_LVDS_2, &MaxBlkLen); + if(EAPI_TEST_SUCCESS(StatusCode)) + i2cBusComboBox->addItem(QString::number(EAPI_ID_I2C_LVDS_2)); + return (result); #endif // _MSC_VER } + diff --git a/i2c.h b/i2c.h index de6d568..8512017 100644 --- a/i2c.h +++ b/i2c.h @@ -30,7 +30,8 @@ struct i2c_adap { }; #define BUNCH 8 -#define I2C_DMEC "i2c-dmec" +#define I2C_DMEC "i2c-dmec" +#define MUX_CHANNEL "%s (chan_id %d" class i2c: public QWidget { @@ -41,7 +42,7 @@ class i2c: public QWidget void free_adapters(struct i2c_adap *adapters); struct i2c_adap* gather_i2c_busses(void); struct i2c_adap* more_adapters(struct i2c_adap *adapters, int n); - + int add_i2c_busses(QComboBox *i2cBusses); public slots: void readClicked();