Updated so controlling devices under Max OS X works!
This commit is contained in:
parent
0495a89b79
commit
2d2b290372
5 changed files with 1013 additions and 884 deletions
|
@ -1,7 +1,6 @@
|
|||
|
||||
SET( tellusbd101_SRCS
|
||||
Device.cpp
|
||||
linux/Device.cpp
|
||||
DeviceIkea.cpp
|
||||
DeviceNexa.cpp
|
||||
DeviceSartano.cpp
|
||||
|
@ -10,20 +9,25 @@ SET( tellusbd101_SRCS
|
|||
TellUsbD101.cpp
|
||||
)
|
||||
|
||||
ADD_DEFINITIONS(
|
||||
-DOS_LINUX
|
||||
)
|
||||
|
||||
IF (APPLE)
|
||||
SET( tellusbd101_SRCS
|
||||
${tellusbd101_SRCS}
|
||||
win/Device.cpp
|
||||
settings/TelldusSettingsCoreFoundationPreferences.cpp
|
||||
)
|
||||
ADD_DEFINITIONS(
|
||||
-D_MACOSX
|
||||
)
|
||||
ELSE ()
|
||||
SET( tellusbd101_SRC
|
||||
${tellusbd101_SRCS}
|
||||
linux/Device.cpp
|
||||
settings/TelldusSettingsConfuse.cpp
|
||||
)
|
||||
ADD_DEFINITIONS(
|
||||
-D_LINUX
|
||||
)
|
||||
|
||||
ENDIF ()
|
||||
|
||||
ADD_LIBRARY(tellusbd101 SHARED
|
||||
|
@ -35,6 +39,7 @@ IF (APPLE)
|
|||
|
||||
TARGET_LINK_LIBRARIES(tellusbd101
|
||||
${COREFOUNDATION_LIBRARY}
|
||||
ftd2xx
|
||||
)
|
||||
ENDIF (APPLE)
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ Device* TelldusSettings::getDevice(int intDeviceId){
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef _WINDOWS
|
||||
#ifdef _LINUX
|
||||
dev->setDevice( getSetting("deviceNode") );
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
#include "..\Device.h"
|
||||
#include "../Device.h"
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include "..\StdAfx.h"
|
||||
#include "FTD2XX.H"
|
||||
#include "ftd2xx.h"
|
||||
|
||||
int getDongleIndex();
|
||||
|
||||
|
@ -50,6 +49,7 @@ int getDongleIndex(){
|
|||
try{
|
||||
DWORD dwNumberOfDevices = 0;
|
||||
|
||||
FT_SetVIDPID(0x1781, 0x0C30);
|
||||
ftStatus = FT_CreateDeviceInfoList(&dwNumberOfDevices);
|
||||
if (ftStatus == FT_OK) {
|
||||
for (int i = 0; i < (int)dwNumberOfDevices; i++) {
|
||||
|
|
87
telldus-core/driver/TellUsbD101/win/WinTypes.h
Executable file
87
telldus-core/driver/TellUsbD101/win/WinTypes.h
Executable file
|
@ -0,0 +1,87 @@
|
|||
#ifndef __WINDOWS_TYPES__
|
||||
#define __WINDOWS_TYPES__
|
||||
|
||||
#define MAX_NUM_DEVICES 50
|
||||
#include <sys/time.h>
|
||||
|
||||
typedef unsigned long DWORD;
|
||||
typedef unsigned long ULONG;
|
||||
typedef unsigned short USHORT;
|
||||
typedef short SHORT;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef unsigned short WORD;
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned char *LPBYTE;
|
||||
typedef int BOOL;
|
||||
typedef char BOOLEAN;
|
||||
typedef char CHAR;
|
||||
typedef int *LPBOOL;
|
||||
typedef unsigned char *PUCHAR;
|
||||
typedef const char *LPCSTR;
|
||||
typedef char *PCHAR;
|
||||
typedef void *PVOID;
|
||||
typedef void *HANDLE;
|
||||
typedef long LONG;
|
||||
typedef int INT;
|
||||
typedef unsigned int UINT;
|
||||
typedef char *LPSTR;
|
||||
typedef char *LPTSTR;
|
||||
typedef DWORD *LPDWORD;
|
||||
typedef WORD *LPWORD;
|
||||
typedef ULONG *PULONG;
|
||||
typedef PVOID LPVOID;
|
||||
typedef void VOID;
|
||||
typedef unsigned long long int ULONGLONG;
|
||||
|
||||
typedef struct _OVERLAPPED {
|
||||
DWORD Internal;
|
||||
DWORD InternalHigh;
|
||||
DWORD Offset;
|
||||
DWORD OffsetHigh;
|
||||
HANDLE hEvent;
|
||||
} OVERLAPPED, *LPOVERLAPPED;
|
||||
|
||||
typedef struct _SECURITY_ATTRIBUTES {
|
||||
DWORD nLength;
|
||||
LPVOID lpSecurityDescriptor;
|
||||
BOOL bInheritHandle;
|
||||
} SECURITY_ATTRIBUTES , *LPSECURITY_ATTRIBUTES;
|
||||
|
||||
typedef struct timeval SYSTEMTIME;
|
||||
typedef struct timeval FILETIME;
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
//
|
||||
// Modem Status Flags
|
||||
//
|
||||
#define MS_CTS_ON ((DWORD)0x0010)
|
||||
#define MS_DSR_ON ((DWORD)0x0020)
|
||||
#define MS_RING_ON ((DWORD)0x0040)
|
||||
#define MS_RLSD_ON ((DWORD)0x0080)
|
||||
|
||||
//
|
||||
// Error Flags
|
||||
//
|
||||
|
||||
#define CE_RXOVER 0x0001 // Receive Queue overflow
|
||||
#define CE_OVERRUN 0x0002 // Receive Overrun Error
|
||||
#define CE_RXPARITY 0x0004 // Receive Parity Error
|
||||
#define CE_FRAME 0x0008 // Receive Framing error
|
||||
#define CE_BREAK 0x0010 // Break Detected
|
||||
#define CE_TXFULL 0x0100 // TX Queue is full
|
||||
#define CE_PTO 0x0200 // LPTx Timeout
|
||||
#define CE_IOE 0x0400 // LPTx I/O Error
|
||||
#define CE_DNS 0x0800 // LPTx Device not selected
|
||||
#define CE_OOP 0x1000 // LPTx Out-Of-Paper
|
||||
#define CE_MODE 0x8000 // Requested mode unsupported
|
||||
|
||||
#ifndef INVALID_HANDLE_VALUE
|
||||
#define INVALID_HANDLE_VALUE 0xFFFFFFFF
|
||||
#endif
|
||||
|
||||
#endif
|
127
telldus-core/driver/TellUsbD101/win/FTD2XX.H → telldus-core/driver/TellUsbD101/win/ftd2xx.h
Normal file → Executable file
127
telldus-core/driver/TellUsbD101/win/FTD2XX.H → telldus-core/driver/TellUsbD101/win/ftd2xx.h
Normal file → Executable file
|
@ -1,6 +1,6 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 2001-2005 Future Technology Devices International Ltd.
|
||||
Copyright (c) 2001-2003 Future Technology Devices International Ltd.
|
||||
|
||||
Module Name:
|
||||
|
||||
|
@ -8,7 +8,7 @@ Module Name:
|
|||
|
||||
Abstract:
|
||||
|
||||
Native USB device driver for FTDI FT8U232/245
|
||||
Native USB interface for FTDI FT8U232/245/2232C
|
||||
FTD2XX library definitions
|
||||
|
||||
Environment:
|
||||
|
@ -23,15 +23,8 @@ Revision History:
|
|||
12/06/03 awm Added FT_StopInTask and FT_RestartInTask.
|
||||
18/09/03 awm Added FT_SetResetPipeRetryCount.
|
||||
10/10/03 awm Added FT_ResetPort.
|
||||
23/01/04 awm Added support for open-by-location.
|
||||
16/03/04 awm Added support for FT2232C.
|
||||
23/09/04 awm Added support for FT232R.
|
||||
20/10/04 awm Added FT_CyclePort.
|
||||
18/01/05 awm Added FT_DEVICE_LIST_INFO_NODE type.
|
||||
11/02/05 awm Added LocId to FT_DEVICE_LIST_INFO_NODE.
|
||||
25/08/05 awm Added FT_SetDeadmanTimeout.
|
||||
02/12/05 awm Removed obsolete references.
|
||||
05/12/05 awm Added FT_GetVersion, FT_GetVersionEx.
|
||||
/03/04 st modified for linux users
|
||||
12/10/04 st added FT_SetVIDPID
|
||||
|
||||
|
||||
--*/
|
||||
|
@ -40,6 +33,11 @@ Revision History:
|
|||
#ifndef FTD2XX_H
|
||||
#define FTD2XX_H
|
||||
|
||||
#ifndef _WINDOWS
|
||||
#include <pthread.h>
|
||||
#define WINAPI
|
||||
#endif
|
||||
|
||||
// The following ifdef block is the standard way of creating macros
|
||||
// which make exporting from a DLL simpler. All files within this DLL
|
||||
// are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
|
||||
|
@ -54,8 +52,24 @@ Revision History:
|
|||
#define FTD2XX_API __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
#ifndef _WINDOWS
|
||||
#include "WinTypes.h"
|
||||
|
||||
#ifdef FTD2XX_API
|
||||
#undef FTD2XX_API
|
||||
#define FTD2XX_API
|
||||
#endif
|
||||
#endif
|
||||
typedef struct _EVENT_HANDLE{
|
||||
pthread_cond_t eCondVar;
|
||||
pthread_mutex_t eMutex;
|
||||
int iVar;
|
||||
} EVENT_HANDLE;
|
||||
|
||||
typedef DWORD *FT_HANDLE;
|
||||
//typedef unsigned int FT_HANDLE;
|
||||
//typedef struct ftdi_device * FT_HANDLE;
|
||||
|
||||
typedef PVOID FT_HANDLE;
|
||||
typedef ULONG FT_STATUS;
|
||||
|
||||
//
|
||||
|
@ -69,7 +83,7 @@ enum {
|
|||
FT_IO_ERROR,
|
||||
FT_INSUFFICIENT_RESOURCES,
|
||||
FT_INVALID_PARAMETER,
|
||||
FT_INVALID_BAUD_RATE,
|
||||
FT_INVALID_BAUD_RATE, //7
|
||||
|
||||
FT_DEVICE_NOT_OPENED_FOR_ERASE,
|
||||
FT_DEVICE_NOT_OPENED_FOR_WRITE,
|
||||
|
@ -93,7 +107,6 @@ enum {
|
|||
|
||||
#define FT_OPEN_BY_SERIAL_NUMBER 1
|
||||
#define FT_OPEN_BY_DESCRIPTION 2
|
||||
#define FT_OPEN_BY_LOCATION 4
|
||||
|
||||
//
|
||||
// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
|
||||
|
@ -195,14 +208,13 @@ enum {
|
|||
FT_DEVICE_UNKNOWN,
|
||||
FT_DEVICE_2232C,
|
||||
FT_DEVICE_232R
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_Open(
|
||||
int deviceNumber,
|
||||
|
@ -223,6 +235,18 @@ FT_STATUS WINAPI FT_ListDevices(
|
|||
DWORD Flags
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS FT_SetVIDPID(
|
||||
DWORD dwVID,
|
||||
DWORD dwPID
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS FT_GetVIDPID(
|
||||
DWORD * pdwVID,
|
||||
DWORD * pdwPID
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_Close(
|
||||
FT_HANDLE ftHandle
|
||||
|
@ -484,10 +508,11 @@ typedef struct ft_program_data {
|
|||
UCHAR Cbus3; // Cbus Mux control
|
||||
UCHAR Cbus4; // Cbus Mux control
|
||||
|
||||
UCHAR RIsVCP; // non-zero if using VCP drivers
|
||||
UCHAR RIsVCP; // zero if using VCP drivers
|
||||
|
||||
} FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
|
||||
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_EE_Program(
|
||||
FT_HANDLE ftHandle,
|
||||
|
@ -497,7 +522,7 @@ FT_STATUS WINAPI FT_EE_Program(
|
|||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_EE_ProgramEx(
|
||||
FT_HANDLE ftHandle,
|
||||
PFT_PROGRAM_DATA pData,
|
||||
PFT_PROGRAM_DATA lpData,
|
||||
char *Manufacturer,
|
||||
char *ManufacturerId,
|
||||
char *Description,
|
||||
|
@ -513,7 +538,7 @@ FT_STATUS WINAPI FT_EE_Read(
|
|||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_EE_ReadEx(
|
||||
FT_HANDLE ftHandle,
|
||||
PFT_PROGRAM_DATA pData,
|
||||
PFT_PROGRAM_DATA lpData,
|
||||
char *Manufacturer,
|
||||
char *ManufacturerId,
|
||||
char *Description,
|
||||
|
@ -573,12 +598,6 @@ FT_STATUS WINAPI FT_SetUSBParameters(
|
|||
ULONG ulOutTransferSize
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_SetDeadmanTimeout(
|
||||
FT_HANDLE ftHandle,
|
||||
ULONG ulDeadmanTimeout
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_GetDeviceInfo(
|
||||
FT_HANDLE ftHandle,
|
||||
|
@ -610,11 +629,6 @@ FT_STATUS WINAPI FT_ResetPort(
|
|||
FT_HANDLE ftHandle
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_CyclePort(
|
||||
FT_HANDLE ftHandle
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Win32-type functions
|
||||
|
@ -808,7 +822,6 @@ BOOL WINAPI FT_W32_WaitCommEvent(
|
|||
LPOVERLAPPED lpOverlapped
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Device information
|
||||
//
|
||||
|
@ -823,7 +836,6 @@ typedef struct _ft_device_list_info_node {
|
|||
FT_HANDLE ftHandle;
|
||||
} FT_DEVICE_LIST_INFO_NODE;
|
||||
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_CreateDeviceInfoList(
|
||||
LPDWORD lpdwNumDevs
|
||||
|
@ -846,25 +858,45 @@ FT_STATUS WINAPI FT_GetDeviceInfoDetail(
|
|||
LPVOID lpDescription,
|
||||
FT_HANDLE *pftHandle
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// Version information
|
||||
// Events
|
||||
//
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_GetDriverVersion(
|
||||
FT_HANDLE ftHandle,
|
||||
LPDWORD lpdwVersion
|
||||
);
|
||||
|
||||
FTD2XX_API
|
||||
FT_STATUS WINAPI FT_GetLibraryVersion(
|
||||
LPDWORD lpdwVersion
|
||||
);
|
||||
#define EV_RXCHAR 0x0001 // Any Character received
|
||||
#define EV_RXFLAG 0x0002 // Received certain character
|
||||
#define EV_TXEMPTY 0x0004 // Transmitt Queue Empty
|
||||
#define EV_CTS 0x0008 // CTS changed state
|
||||
#define EV_DSR 0x0010 // DSR changed state
|
||||
#define EV_RLSD 0x0020 // RLSD changed state
|
||||
#define EV_BREAK 0x0040 // BREAK received
|
||||
#define EV_ERR 0x0080 // Line status error occurred
|
||||
#define EV_RING 0x0100 // Ring signal detected
|
||||
#define EV_PERR 0x0200 // Printer error occured
|
||||
#define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
|
||||
#define EV_EVENT1 0x0800 // Provider specific event 1
|
||||
#define EV_EVENT2 0x1000 // Provider specific event 2
|
||||
|
||||
//
|
||||
// Escape Functions
|
||||
//
|
||||
|
||||
#define SETXOFF 1 // Simulate XOFF received
|
||||
#define SETXON 2 // Simulate XON received
|
||||
#define SETRTS 3 // Set RTS high
|
||||
#define CLRRTS 4 // Set RTS low
|
||||
#define SETDTR 5 // Set DTR high
|
||||
#define CLRDTR 6 // Set DTR low
|
||||
#define RESETDEV 7 // Reset device if possible
|
||||
#define SETBREAK 8 // Set the device break line.
|
||||
#define CLRBREAK 9 // Clear the device break line.
|
||||
|
||||
//
|
||||
// PURGE function flags.
|
||||
//
|
||||
#define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port.
|
||||
#define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port.
|
||||
#define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there.
|
||||
#define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there.
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -873,3 +905,8 @@ FT_STATUS WINAPI FT_GetLibraryVersion(
|
|||
|
||||
#endif /* FTD2XX_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue