summaryrefslogtreecommitdiffabout
path: root/gammu/emb/common/device
Side-by-side diff
Diffstat (limited to 'gammu/emb/common/device') (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/device/bluetoth/blue_w32.c4
-rw-r--r--gammu/emb/common/device/bluetoth/blue_w32.h4
-rw-r--r--gammu/emb/common/device/serial/ser_w32.h2
3 files changed, 5 insertions, 5 deletions
diff --git a/gammu/emb/common/device/bluetoth/blue_w32.c b/gammu/emb/common/device/bluetoth/blue_w32.c
index a631c9f..8a367f4 100644
--- a/gammu/emb/common/device/bluetoth/blue_w32.c
+++ b/gammu/emb/common/device/bluetoth/blue_w32.c
@@ -1,216 +1,216 @@
/* (c) 2003-2004 by Marcin Wiacek and Intra */
#include "../../gsmstate.h"
#ifdef GSM_ENABLE_BLUETOOTHDEVICE
#ifdef WIN32
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <windows.h>
#include <io.h>
#include "../../misc/coding/coding.h"
#include "../../gsmcomon.h"
#include "../devfunc.h"
#include "bluetoth.h"
#include "blue_w32.h"
GSM_Error bluetooth_connect(GSM_StateMachine *s, int port, char *device)
{
GSM_Device_BlueToothData *d = &s->Device.Data.BlueTooth;
WSADATA wsaData;
SOCKADDR_BTH sab;
int i;
smprintf(s, "Connecting to RF channel %i\n",port);
WSAStartup(MAKEWORD(1,1), &wsaData);
d->hPhone = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
if (d->hPhone == INVALID_SOCKET) {
i = GetLastError();
GSM_OSErrorInfo(s, "Socket in bluetooth_open");
if (i == 10041) return ERR_DEVICENODRIVER;//unknown socket type
return ERR_UNKNOWN;
}
memset (&sab, 0, sizeof(sab));
sab.port = port;
sab.addressFamily = AF_BTH;
sab.btAddr = 0;
for (i=0;i<(int)strlen(device);i++) {
if (device[i] >='0' && device[i] <='9') {
sab.btAddr = sab.btAddr * 16;
sab.btAddr = sab.btAddr + (device[i]-'0');
}
if (device[i] >='a' && device[i] <='f') {
sab.btAddr = sab.btAddr * 16;
sab.btAddr = sab.btAddr + (device[i]-'a'+10);
}
if (device[i] >='A' && device[i] <='F') {
sab.btAddr = sab.btAddr * 16;
sab.btAddr = sab.btAddr + (device[i]-'A'+10);
}
}
dbgprintf("Remote Bluetooth device is %04x%08x\n",
GET_NAP(sab.btAddr), GET_SAP(sab.btAddr));
if (connect (d->hPhone, (struct sockaddr *)&sab, sizeof(sab)) != 0) {
i = GetLastError();
GSM_OSErrorInfo(s, "Connect in bluetooth_open");
if (i == 10060) return ERR_TIMEOUT; //remote device failed to respond
if (i == 10050) return ERR_DEVICENOTWORK; //socket operation connected with dead network
//noauth
close(d->hPhone);
return ERR_UNKNOWN;
}
return ERR_NONE;
}
#ifdef BLUETOOTH_RF_SEARCHING
#pragma comment(lib, "irprops.lib")
#pragma comment(lib, "ws2_32.lib")
static GSM_Error bluetooth_checkdevice(GSM_StateMachine *s, char *address, WSAPROTOCOL_INFO *protocolInfo)
{
GSM_Device_BlueToothData *d = &s->Device.Data.BlueTooth;
WSAQUERYSET querySet;
DWORD flags;
GUID protocol;
int i, result;
BYTE buffer[2000];
char addressAsString[1000];
DWORD bufferLength, addressSize;
WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer;
- HANDLE handle;
+ Qt::HANDLE handle;
GSM_Error error;
memset(&querySet, 0, sizeof(querySet));
querySet.dwSize = sizeof(querySet);
protocol = L2CAP_PROTOCOL_UUID;
querySet.lpServiceClassId = &protocol;
querySet.dwNameSpace = NS_BTH;
querySet.lpszContext = address;
flags = LUP_FLUSHCACHE | LUP_RETURN_NAME |
LUP_RETURN_TYPE | LUP_RETURN_ADDR |
LUP_RETURN_BLOB | LUP_RETURN_COMMENT;
result = WSALookupServiceBegin(&querySet, flags, &handle);
if (result != 0) return ERR_UNKNOWN;
bufferLength = sizeof(buffer);
while (1) {
result = WSALookupServiceNext(handle, flags, &bufferLength, pResults);
if (result != 0) break;
addressSize = sizeof(addressAsString);
addressAsString[0] = 0;
if (WSAAddressToString(pResults->lpcsaBuffer->RemoteAddr.lpSockaddr,
pResults->lpcsaBuffer->RemoteAddr.iSockaddrLength, protocolInfo,
addressAsString,&addressSize)==0) {
smprintf(s, "%s - ", addressAsString);
}
smprintf(s, "\"%s\"\n", pResults->lpszServiceInstanceName);
if (addressAsString[0] != 0) {
for (i=strlen(addressAsString)-1;i>0;i--) {
if (addressAsString[i] == ':') break;
}
if (bluetooth_checkservicename(s, pResults->lpszServiceInstanceName) == ERR_NONE) {
error = bluetooth_connect(s,atoi(addressAsString+i+1),address+1);
result = WSALookupServiceEnd(handle);
return error;
}
}
}
result = WSALookupServiceEnd(handle);
return ERR_NOTSUPPORTED;
}
GSM_Error bluetooth_findchannel(GSM_StateMachine *s)
{
GSM_Device_BlueToothData *d = &s->Device.Data.BlueTooth;
WSADATA wsaData;
int i, protocolInfoSize, result;
WSAPROTOCOL_INFO protocolInfo;
- HANDLE handle;
+ Qt::HANDLE handle;
DWORD flags;
WSAQUERYSET querySet;
BYTE buffer[2000];
char addressAsString[1000];
DWORD bufferLength, addressSize;
WSAQUERYSET *pResults = (WSAQUERYSET*)&buffer;
GSM_Error error;
if (WSAStartup(MAKEWORD(2,2), &wsaData)!=0x00) return ERR_DEVICENODRIVER;
d->hPhone = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
if (d->hPhone == INVALID_SOCKET) {
i = GetLastError();
GSM_OSErrorInfo(s, "Socket in bluetooth_open");
if (i == 10041) return ERR_DEVICENODRIVER;//unknown socket type
return ERR_UNKNOWN;
}
protocolInfoSize = sizeof(protocolInfo);
if (getsockopt(d->hPhone, SOL_SOCKET, SO_PROTOCOL_INFO,
(char*)&protocolInfo, &protocolInfoSize) != 0)
{
close(d->hPhone);
return ERR_UNKNOWN;
}
close(d->hPhone);
if (!strcmp(s->CurrentConfig->Device,"com2:")) {
bufferLength = sizeof(buffer);
flags = LUP_RETURN_NAME | LUP_CONTAINERS |
LUP_RETURN_ADDR | LUP_FLUSHCACHE |
LUP_RETURN_TYPE | LUP_RETURN_BLOB | LUP_RES_SERVICE;
memset(&querySet, 0, sizeof(querySet));
querySet.dwSize = sizeof(querySet);
querySet.dwNameSpace = NS_BTH;
result = WSALookupServiceBegin(&querySet, flags, &handle);
if (result != 0) return ERR_UNKNOWN;
while (1) {
result = WSALookupServiceNext(handle, flags, &bufferLength, pResults);
if (result != 0) break;
smprintf(s, "\"%s\"", pResults->lpszServiceInstanceName);
addressSize = sizeof(addressAsString);
addressAsString[0] = 0;
if (WSAAddressToString(pResults->lpcsaBuffer->RemoteAddr.lpSockaddr,
pResults->lpcsaBuffer->RemoteAddr.iSockaddrLength, &protocolInfo,
addressAsString,&addressSize)==0) {
smprintf(s, " - %s\n", addressAsString);
error = bluetooth_checkdevice(s, addressAsString,&protocolInfo);
if (error == ERR_NONE) {
result = WSALookupServiceEnd(handle);
return error;
}
} else smprintf(s, "\n");
}
result = WSALookupServiceEnd(handle);
return ERR_NOTSUPPORTED;
} else {
return bluetooth_checkdevice(s, s->CurrentConfig->Device,&protocolInfo);
}
}
#endif
#endif
#endif
/* How should editor hadle tabs in this file? Add editor commands here.
* vim: noexpandtab sw=8 ts=8 sts=8:
*/
diff --git a/gammu/emb/common/device/bluetoth/blue_w32.h b/gammu/emb/common/device/bluetoth/blue_w32.h
index e457c92..409f4b1 100644
--- a/gammu/emb/common/device/bluetoth/blue_w32.h
+++ b/gammu/emb/common/device/bluetoth/blue_w32.h
@@ -1,188 +1,188 @@
GSM_Error bluetooth_connect(GSM_StateMachine *s, int port, char *device);
GSM_Error bluetooth_findchannel(GSM_StateMachine *s);
/* MS Platform SDK */
#ifndef __blue_w32_h
#define __blue_w32_h
#include <pshpack1.h> // Without it compiled code hangs up BT stack
typedef ULONGLONG BTH_ADDR, *PBTH_ADDR;
#define NAP_MASK ((ULONGLONG) 0xFFFF00000000)
#define SAP_MASK ((ULONGLONG) 0x0000FFFFFFFF)
#define NAP_BIT_OFFSET (8 * 4)
#define SAP_BIT_OFFSET (0)
#define GET_NAP(_bth_addr) ((USHORT) (((_bth_addr) & NAP_MASK) >> NAP_BIT_OFFSET))
#define GET_SAP(_bth_addr) ((ULONG) (((_bth_addr) & SAP_MASK) >> SAP_BIT_OFFSET))
#ifndef AF_BTH
#define AF_BTH 32
#endif
typedef struct _SOCKADDR_BTH {
USHORT addressFamily; // Always AF_BTH
BTH_ADDR btAddr; // Bluetooth device address
GUID serviceClassId; // [OPTIONAL] system will query SDP for port
ULONG port; // RFCOMM channel or L2CAP PSM
} SOCKADDR_BTH, *PSOCKADDR_BTH;
#define BTHPROTO_RFCOMM 0x0003
#ifdef BLUETOOTH_RF_SEARCHING
typedef struct _SOCKET_ADDRESS {
LPSOCKADDR lpSockaddr ;
INT iSockaddrLength ;
} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ;
typedef struct _CSADDR_INFO {
SOCKET_ADDRESS LocalAddr ;
SOCKET_ADDRESS RemoteAddr ;
INT iSocketType ;
INT iProtocol ;
} CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ;
typedef struct _AFPROTOCOLS {
INT iAddressFamily;
INT iProtocol;
} AFPROTOCOLS, *PAFPROTOCOLS, *LPAFPROTOCOLS;
typedef enum _WSAEcomparator
{
COMP_EQUAL = 0,
COMP_NOTLESS
} WSAECOMPARATOR, *PWSAECOMPARATOR, *LPWSAECOMPARATOR;
typedef struct _WSAVersion
{
DWORD dwVersion;
WSAECOMPARATOR ecHow;
}WSAVERSION, *PWSAVERSION, *LPWSAVERSION;
typedef struct _WSAQuerySetA
{
DWORD dwSize;
LPSTR lpszServiceInstanceName;
LPGUID lpServiceClassId;
LPWSAVERSION lpVersion;
LPSTR lpszComment;
DWORD dwNameSpace;
LPGUID lpNSProviderId;
LPSTR lpszContext;
DWORD dwNumberOfProtocols;
LPAFPROTOCOLS lpafpProtocols;
LPSTR lpszQueryString;
DWORD dwNumberOfCsAddrs;
LPCSADDR_INFO lpcsaBuffer;
DWORD dwOutputFlags;
LPBLOB lpBlob;
} WSAQUERYSET, WSAQUERYSETA, *PWSAQUERYSETA, *LPWSAQUERYSETA;
DEFINE_GUID(L2CAP_PROTOCOL_UUID, 0x00000100, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
#ifndef NS_BTH
# define NS_BTH 16
#endif
#define LUP_CONTAINERS 0x0002
#define LUP_RETURN_NAME 0x0010
#define LUP_RETURN_TYPE 0x0020
#define LUP_RETURN_COMMENT 0x0080
#define LUP_RETURN_ADDR 0x0100
#define LUP_RETURN_BLOB 0x0200
#define LUP_FLUSHCACHE 0x1000
#define LUP_RES_SERVICE 0x8000
#define WSAAPI FAR PASCAL
#ifndef WINSOCK_API_LINKAGE
#ifdef DECLSPEC_IMPORT
#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
#else
#define WINSOCK_API_LINKAGE
#endif
#endif
WINSOCK_API_LINKAGE INT WSAAPI
WSALookupServiceBeginA(
IN LPWSAQUERYSETA lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup
);
#define WSALookupServiceBegin WSALookupServiceBeginA
WINSOCK_API_LINKAGE INT WSAAPI
WSALookupServiceNextA(
- IN HANDLE hLookup,
+ IN Qt::HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETA lpqsResults
);
#define WSALookupServiceNext WSALookupServiceNextA
-WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceEnd(IN HANDLE hLookup);
+WINSOCK_API_LINKAGE INT WSAAPI WSALookupServiceEnd(IN Qt::HANDLE hLookup);
#define MAX_PROTOCOL_CHAIN 7
typedef struct _WSAPROTOCOLCHAIN {
int ChainLen; /* the length of the chain, */
/* length = 0 means layered protocol, */
/* length = 1 means base protocol, */
/* length > 1 means protocol chain */
DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCatalogEntryIds */
} WSAPROTOCOLCHAIN, FAR * LPWSAPROTOCOLCHAIN;
#define WSAPROTOCOL_LEN 255
typedef struct _WSAPROTOCOL_INFOA {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
CHAR szProtocol[WSAPROTOCOL_LEN+1];
} WSAPROTOCOL_INFOA, FAR * LPWSAPROTOCOL_INFOA;
typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
#define SO_PROTOCOL_INFOA 0x2004 /* WSAPROTOCOL_INFOA structure */
#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
WINSOCK_API_LINKAGE INT WSAAPI
WSAAddressToStringA(
IN LPSOCKADDR lpsaAddress,
IN DWORD dwAddressLength,
IN LPWSAPROTOCOL_INFOA lpProtocolInfo,
IN OUT LPSTR lpszAddressString,
IN OUT LPDWORD lpdwAddressStringLength
);
#define WSAAddressToString WSAAddressToStringA
#endif
#endif
/* How should editor hadle tabs in this file? Add editor commands here.
* vim: noexpandtab sw=8 ts=8 sts=8:
*/
diff --git a/gammu/emb/common/device/serial/ser_w32.h b/gammu/emb/common/device/serial/ser_w32.h
index d226f32..d1aa37a 100644
--- a/gammu/emb/common/device/serial/ser_w32.h
+++ b/gammu/emb/common/device/serial/ser_w32.h
@@ -1,19 +1,19 @@
#ifdef WIN32
#ifndef winserial_h
#define winserial_h
#include <windows.h>
typedef struct {
- HANDLE hPhone;
+ Qt::HANDLE hPhone;
DCB old_settings;
OVERLAPPED osWrite,osRead;
} GSM_Device_SerialData;
#endif
#endif
/* How should editor hadle tabs in this file? Add editor commands here.
* vim: noexpandtab sw=8 ts=8 sts=8:
*/