diff options
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | plugins/iwmx.h | 20 | ||||
-rw-r--r-- | plugins/iwmxsdk.c | 55 |
3 files changed, 79 insertions, 28 deletions
diff --git a/configure.ac b/configure.ac index 25ada261..7b988423 100644 --- a/configure.ac +++ b/configure.ac @@ -223,6 +223,8 @@ if (test "${enable_iwmx}" = "yes"); then PKG_CONFIG_PATH="" AC_SUBST(IWMXSDK_CFLAGS) AC_SUBST(IWMXSDK_LIBS) + + # Fix API compat breakage from 1.4 to 1.5... CPPFLAGS_save=$CPPFLAGS CPPFLAGS="$IWMXSDK_CFLAGS $CPPFLAGS" AH_TEMPLATE([HAVE_IWMXSDK_STATUS_IDLE], @@ -231,6 +233,36 @@ if (test "${enable_iwmx}" = "yes"); then [AC_DEFINE([HAVE_IWMXSDK_STATUS_IDLE], [1], [])], [], [[#include <WiMaxType.h>]]) + + AH_TEMPLATE([HAVE_WIMAX_API_DEVICE_ID], + [WIMAX_API_DEVICE_ID is present]) + AC_CHECK_TYPE(WIMAX_API_DEVICE_ID, + [AC_DEFINE([HAVE_WIMAX_API_DEVICE_ID], [1], [])], + [], + [[#include <WiMaxType.h>]]) + + AH_TEMPLATE([HAVE_WIMAX_API_HW_DEVICE_ID], + [WIMAX_API_HW_DEVICE_ID is present]) + AC_CHECK_TYPE(WIMAX_API_HW_DEVICE_ID, + [AC_DEFINE([HAVE_WIMAX_API_HW_DEVICE_ID], [1], [])], + [], + [[#include <WiMaxType.h>]]) + + AH_TEMPLATE([HAVE_WIMAX_API_NSP_INFO_EX], + [WIMAX_API_NSP_INFO_EX is present]) + AC_CHECK_TYPE(WIMAX_API_NSP_INFO_EX, + [AC_DEFINE([HAVE_WIMAX_API_NSP_INFO_EX], [1], [])], + [], + [[#include <WiMaxType.h>] + [#include <WiMaxTypesEx.h>]]) + + AH_TEMPLATE([HAVE_WIMAX_API_CONNECTED_NSP_INFO], + [WIMAX_API_CONNECTED_NSP_INFO is present]) + AC_CHECK_TYPE(WIMAX_API_CONNECTED_NSP_INFO, + [AC_DEFINE([HAVE_WIMAX_API_CONNECTED_NSP_INFO], [1], [])], + [], + [[#include <WiMaxType.h>]]) + CPPFLAGS=$CPPFLAGS_save fi AM_CONDITIONAL(IWMX, test "${enable_iwmx}" = "yes") diff --git a/plugins/iwmx.h b/plugins/iwmx.h index 265c00cc..02b4f5b1 100644 --- a/plugins/iwmx.h +++ b/plugins/iwmx.h @@ -19,6 +19,24 @@ * */ +/* Fix source compat brakage from 1.4 to 1.5...*/ +#ifndef HAVE_WIMAX_API_DEVICE_ID +typedef struct WIMAX_API_DEVICE_ID WIMAX_API_DEVICE_ID; +#endif + +#ifndef HAVE_WIMAX_API_CONNECTED_NSP_INFO +typedef struct WIMAX_API_CONNECTED_NSP_INFO WIMAX_API_CONNECTED_NSP_INFO; +#endif + +#ifndef HAVE_WIMAX_API_NSP_INFO_EX +typedef struct WIMAX_API_NSP_INFO_EX WIMAX_API_NSP_INFO_EX; +#endif + +#ifndef HAVE_WIMAX_API_HW_DEVICE_ID +typedef struct WIMAX_API_HW_DEVICE_ID WIMAX_API_HW_DEVICE_ID; +#endif + + /* * * The plugin is broken in two main parts: the glue to connman @@ -73,7 +91,7 @@ */ struct wmxsdk { - struct WIMAX_API_DEVICE_ID device_id; + WIMAX_API_DEVICE_ID device_id; struct connman_device *dev; GStaticMutex network_mutex; diff --git a/plugins/iwmxsdk.c b/plugins/iwmxsdk.c index 7888c09a..b7dee540 100644 --- a/plugins/iwmxsdk.c +++ b/plugins/iwmxsdk.c @@ -35,6 +35,7 @@ #include <connman/inet.h> #include <connman/log.h> +#include <WiMaxType.h> #include <WiMaxAPI.h> #include <WiMaxAPIEx.h> @@ -43,12 +44,12 @@ /* Yes, this is dirty; see above on IWMX_SDK_DEV_MAX*/ static struct wmxsdk g_iwmx_sdk_devs[IWMX_SDK_DEV_MAX]; -static struct wmxsdk *deviceid_to_wmxsdk(struct WIMAX_API_DEVICE_ID *device_id) +static struct wmxsdk *deviceid_to_wmxsdk(WIMAX_API_DEVICE_ID *device_id) { return container_of(device_id, struct wmxsdk, device_id); } -static struct WIMAX_API_DEVICE_ID g_api; +static WIMAX_API_DEVICE_ID g_api; /* @@ -185,7 +186,7 @@ struct connman_network *__iwmx_sdk_get_connected_network(struct wmxsdk *wmxsdk) { struct connman_network *nw; - struct WIMAX_API_CONNECTED_NSP_INFO nsp_info; + WIMAX_API_CONNECTED_NSP_INFO nsp_info; WIMAX_API_RET r; char errstr[512]; UINT32 errstr_size = sizeof(errstr); @@ -226,8 +227,8 @@ struct connman_network *__iwmx_sdk_get_connected_network(struct wmxsdk *wmxsdk) * change callback is called and that will fiddle with the connman * internals. */ -static void __iwmx_sdk_rf_state_cb(struct WIMAX_API_DEVICE_ID *device_id, - WIMAX_API_RF_STATE rf_state) +static void __iwmx_sdk_rf_state_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_RF_STATE rf_state) { DBG("rf_state changed to %d\n", rf_state); } @@ -341,8 +342,8 @@ error_get_status: * from disconnecting to something else); the state change callback is * called and that will fiddle with the connman internals. */ -static void __iwmx_sdk_connect_cb(struct WIMAX_API_DEVICE_ID *device_id, - WIMAX_API_NETWORK_CONNECTION_RESP resp) +static void __iwmx_sdk_connect_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_NETWORK_CONNECTION_RESP resp) { WIMAX_API_DEVICE_STATUS status; struct wmxsdk *wmxsdk = deviceid_to_wmxsdk(device_id); @@ -459,8 +460,8 @@ error_get_status: * We just update the result of the command and wake up anybody who is * waiting for this conditional variable. */ -static void __iwmx_sdk_disconnect_cb(struct WIMAX_API_DEVICE_ID *device_id, - WIMAX_API_NETWORK_CONNECTION_RESP resp) +static void __iwmx_sdk_disconnect_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_NETWORK_CONNECTION_RESP resp) { struct wmxsdk *wmxsdk = deviceid_to_wmxsdk(device_id); WIMAX_API_DEVICE_STATUS status; @@ -549,7 +550,7 @@ error_get_status: * * Just pass them to the state transition handler */ -static void __iwmx_sdk_state_change_cb(struct WIMAX_API_DEVICE_ID *device_id, +static void __iwmx_sdk_state_change_cb(WIMAX_API_DEVICE_ID *device_id, WIMAX_API_DEVICE_STATUS status, WIMAX_API_STATUS_REASON reason, WIMAX_API_CONNECTION_PROGRESS_INFO pi) @@ -565,9 +566,9 @@ static void __iwmx_sdk_state_change_cb(struct WIMAX_API_DEVICE_ID *device_id, * From here we update the connman core idea of which networks are * available. */ -static void __iwmx_sdk_scan_common_cb(struct WIMAX_API_DEVICE_ID *device_id, - struct WIMAX_API_NSP_INFO_EX *nsp_list, - UINT32 nsp_list_size) +static void __iwmx_sdk_scan_common_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_NSP_INFO_EX *nsp_list, + UINT32 nsp_list_size) { struct wmxsdk *wmxsdk = deviceid_to_wmxsdk(device_id); unsigned itr; @@ -576,7 +577,7 @@ static void __iwmx_sdk_scan_common_cb(struct WIMAX_API_DEVICE_ID *device_id, g_static_mutex_lock(&wmxsdk->network_mutex); for (itr = 0; itr < nsp_list_size; itr++) { int strength; - struct WIMAX_API_NSP_INFO_EX *nsp_info = &nsp_list[itr]; + WIMAX_API_NSP_INFO_EX *nsp_info = &nsp_list[itr]; snprintf(station_name, sizeof(station_name), "%s", (char *)nsp_info->NSPName); /* CAPI is reporing link quality as zero -- if it is @@ -605,9 +606,9 @@ static void __iwmx_sdk_scan_common_cb(struct WIMAX_API_DEVICE_ID *device_id, * * We treat them same as wide, so we just call that. */ -static void __iwmx_sdk_wide_scan_cb(struct WIMAX_API_DEVICE_ID *device_id, - struct WIMAX_API_NSP_INFO_EX *nsp_list, - UINT32 nsp_list_size) +static void __iwmx_sdk_wide_scan_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_NSP_INFO_EX *nsp_list, + UINT32 nsp_list_size) { __iwmx_sdk_scan_common_cb(device_id, nsp_list, nsp_list_size); } @@ -617,8 +618,8 @@ static void __iwmx_sdk_wide_scan_cb(struct WIMAX_API_DEVICE_ID *device_id, * * We treat them same as wide, so we just call that. */ -static void __iwmx_sdk_scan_cb(struct WIMAX_API_DEVICE_ID *device_id, - struct WIMAX_API_NSP_INFO_EX *nsp_list, +static void __iwmx_sdk_scan_cb(WIMAX_API_DEVICE_ID *device_id, + WIMAX_API_NSP_INFO_EX *nsp_list, UINT32 nsp_list_size, UINT32 searchProgress) { __iwmx_sdk_scan_common_cb(device_id, nsp_list, nsp_list_size); @@ -635,7 +636,7 @@ int iwmx_sdk_scan(struct wmxsdk *wmxsdk) int result; UINT32 nsp_list_length = 10; - struct WIMAX_API_NSP_INFO_EX nsp_list[10]; /* FIXME: up to 32? */ + WIMAX_API_NSP_INFO_EX nsp_list[10]; /* FIXME: up to 32? */ WIMAX_API_RET r; char errstr[512]; @@ -897,12 +898,12 @@ error_bug: return; } -static void iwmx_sdk_addremove_cb(struct WIMAX_API_DEVICE_ID *devid, - BOOL presence) +static void iwmx_sdk_addremove_cb(WIMAX_API_DEVICE_ID *devid, + BOOL presence) { unsigned int cnt; WIMAX_API_RET r; - struct WIMAX_API_HW_DEVICE_ID device_id_list[5]; + WIMAX_API_HW_DEVICE_ID device_id_list[5]; UINT32 device_id_list_size = ARRAY_SIZE(device_id_list); char errstr[512]; @@ -923,7 +924,7 @@ static void iwmx_sdk_addremove_cb(struct WIMAX_API_DEVICE_ID *devid, DBG("No WiMAX devices reported\n"); else for (cnt = 0; cnt < device_id_list_size; cnt++) { - struct WIMAX_API_HW_DEVICE_ID *dev = + WIMAX_API_HW_DEVICE_ID *dev = device_id_list + cnt; DBG("#%u index #%u device %s\n", cnt, dev->deviceIndex, dev->deviceName); @@ -936,7 +937,7 @@ static void iwmx_sdk_addremove_cb(struct WIMAX_API_DEVICE_ID *devid, } if (presence) { - struct WIMAX_API_HW_DEVICE_ID *dev = + WIMAX_API_HW_DEVICE_ID *dev = device_id_list + devid->deviceIndex; iwmx_sdk_dev_add(devid->deviceIndex, dev->deviceIndex, dev->deviceName); @@ -957,7 +958,7 @@ int iwmx_sdk_api_init(void) char errstr[512]; UINT32 errstr_size = sizeof(errstr); - struct WIMAX_API_HW_DEVICE_ID device_id_list[5]; + WIMAX_API_HW_DEVICE_ID device_id_list[5]; UINT32 device_id_list_size = ARRAY_SIZE(device_id_list); memset(&g_api, 0, sizeof(g_api)); @@ -997,7 +998,7 @@ int iwmx_sdk_api_init(void) DBG("No WiMAX devices reported\n"); else for (cnt = 0; cnt < device_id_list_size; cnt++) { - struct WIMAX_API_HW_DEVICE_ID *dev = + WIMAX_API_HW_DEVICE_ID *dev = device_id_list + cnt; DBG("#%u index #%u device %s\n", cnt, dev->deviceIndex, dev->deviceName); |