--- apps/obex_test.c | 18 ++++++++++-------- include/openobex/obex.h | 3 ++- lib/obex.c | 30 ++++++++++++++++++++++-------- lib/obex.sym | 3 ++- 4 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/apps/obex_test.c b/apps/obex_test.c index 82af2c4..8ce089f 100644 --- a/apps/obex_test.c +++ b/apps/obex_test.c @@ -157,7 +157,7 @@ int main (int argc, char *argv[]) #endif #ifdef HAVE_USB - obex_interface_t *obex_intf; + obex_interface_t *obex_intf = NULL; #endif struct context global_context = {0,}; @@ -271,12 +271,14 @@ int main (int argc, char *argv[]) perror( "OBEX_Init failed"); exit(0); } - interfaces_number = OBEX_FindInterfaces(handle, &obex_intf); - for (i=0; i < interfaces_number; i++) + interfaces_number = OBEX_EnumerateInterfaces(handle); + for (i=0; i < interfaces_number; i++) { + obex_intf = OBEX_GetInterfaceByIndex(handle, i); printf("Interface %d: %s %s %s\n", i, - obex_intf[i].usb.manufacturer, - obex_intf[i].usb.product, - obex_intf[i].usb.control_interface); + obex_intf->usb.manufacturer, + obex_intf->usb.product, + obex_intf->usb.control_interface); + } printf("Use '%s -u interface_number' to run interactive OBEX test client\n", argv[0]); OBEX_Cleanup(handle); exit(0); @@ -289,12 +291,12 @@ int main (int argc, char *argv[]) exit(0); } - interfaces_number = OBEX_FindInterfaces(handle, &obex_intf); + interfaces_number = OBEX_EnumerateInterfaces(handle); if (intf_num >= interfaces_number) { printf( "Invalid interface number\n"); exit(0); } - obex_intf += intf_num; + obex_intf = OBEX_GetInterfaceByIndex(handle, intf_num); break; default: diff --git a/include/openobex/obex.h b/include/openobex/obex.h index 5488d3b..a24927d 100644 --- a/include/openobex/obex.h +++ b/include/openobex/obex.h @@ -162,7 +162,8 @@ OPENOBEX_SYMBOL(int) FdOBEX_TransportSetup(obex_t *self, int rfd, int wfd, int m /* * OBEX interface discovery API */ -OPENOBEX_SYMBOL(int) OBEX_FindInterfaces(obex_t *self, obex_interface_t **intf); +OPENOBEX_SYMBOL(int) OBEX_EnumerateInterfaces(obex_t *self); +OPENOBEX_SYMBOL(obex_interface_t *) OBEX_GetInterfaceByIndex(obex_t *self, int i); OPENOBEX_SYMBOL(int) OBEX_InterfaceConnect(obex_t *self, obex_interface_t *intf); OPENOBEX_SYMBOL(void) OBEX_FreeInterfaces(obex_t *self); diff --git a/lib/obex.c b/lib/obex.c index 54cba70..22965f1 100644 --- a/lib/obex.c +++ b/lib/obex.c @@ -1292,13 +1292,12 @@ int CALLAPI OBEX_InterfaceConnect(obex_t *self, obex_interface_t *intf) } /** - Get a list of OBEX interfaces on the system. + Find OBEX interfaces on the system. \param self OBEX handle - \param interfaces A list of OBEX interfaces - \return a list of OBEX interfaces, or NULL if there are none. + \return the number of OBEX interfaces. */ LIB_SYMBOL -int CALLAPI OBEX_FindInterfaces(obex_t *self, obex_interface_t **interfaces) +int CALLAPI OBEX_EnumerateInterfaces(obex_t *self) { DEBUG(4, "\n"); @@ -1315,18 +1314,33 @@ int CALLAPI OBEX_FindInterfaces(obex_t *self, obex_interface_t **interfaces) break; } - if (interfaces) - *interfaces = self->interfaces; - return self->interfaces_number; } /** + Get OBEX interface information. + \param self OBEX handle + \param i interface number + \return OBEX interface information. + */ +LIB_SYMBOL +obex_interface_t * CALLAPI OBEX_GetInterfaceByIndex(obex_t *self, int i) +{ + DEBUG(4, "\n"); + + obex_return_val_if_fail(self != NULL, NULL); + + if (i >= self->interfaces_number || i < 0) + return NULL; + return &self->interfaces[i]; +} + +/** Free memory allocated to OBEX interface structures. \param self OBEX handle Frees memory allocated to OBEX interface structures after it has been - allocated by OBEX_FindInterfaces. + allocated by OBEX_EnumerateInterfaces. */ LIB_SYMBOL void CALLAPI OBEX_FreeInterfaces(obex_t *self) diff --git a/lib/obex.sym b/lib/obex.sym index 741a2b0..11cfc0a 100644 --- a/lib/obex.sym +++ b/lib/obex.sym @@ -44,5 +44,6 @@ BtOBEX_ServerRegister BtOBEX_TransportConnect FdOBEX_TransportSetup OBEX_InterfaceConnect -OBEX_FindInterfaces +OBEX_EnumerateInterfaces +OBEX_GetInterfaceByIndex OBEX_FreeInterfaces -- 1.6.0.6 ------------------------------------------------------------------------------ Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM) software. With Adobe AIR, Ajax developers can use existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web. Download the Adobe AIR SDK and Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com _______________________________________________ Openobex-users mailing list Openobex-users@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/openobex-users