summaryrefslogtreecommitdiffstats
path: root/stack/obx/hdrs
diff options
context:
space:
mode:
Diffstat (limited to 'stack/obx/hdrs')
-rw-r--r--stack/obx/hdrs/obx_dauth.c149
-rw-r--r--stack/obx/hdrs/obx_dbtp.c189
-rw-r--r--stack/obx/hdrs/obx_dopt.c52
-rw-r--r--stack/obx/hdrs/obx_dunic.c64
-rw-r--r--stack/obx/hdrs/obx_dutf.c91
-rw-r--r--stack/obx/hdrs/obx_dwchar.c91
-rw-r--r--stack/obx/hdrs/obx_ebtp.c177
-rw-r--r--stack/obx/hdrs/obx_eopt.c51
-rw-r--r--stack/obx/hdrs/obx_eunic.c64
-rw-r--r--stack/obx/hdrs/obx_eutf.c111
-rw-r--r--stack/obx/hdrs/obx_ewchar.c100
-rw-r--r--stack/obx/hdrs/obx_gen.c896
-rw-r--r--stack/obx/hdrs/obx_wchar.c84
-rw-r--r--stack/obx/hdrs/utfc.c245
14 files changed, 0 insertions, 2364 deletions
diff --git a/stack/obx/hdrs/obx_dauth.c b/stack/obx/hdrs/obx_dauth.c
deleted file mode 100644
index 91d4bd7..0000000
--- a/stack/obx/hdrs/obx_dauth.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dauth.c
-**
-** File: OBEX Authentication related functions
-**
-** Copyright (c) 2003-2008, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-
-
-
-#if (OBX_CLIENT_INCLUDED == TRUE)
-
-/*******************************************************************************
-**
-** Function OBX_ReadChallenge
-**
-** Description This function is called by the client to read the Realm and
-** options of the Authentication Challenge Header in the
-** given OBEX packet ( from an OBX_PASSWORD_EVT event).
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadChallenge(BT_HDR *p_pkt, tOBX_CHARSET *p_charset,
- UINT8 **p_realm, UINT8 *p_len,
- tOBX_AUTH_OPT *p_option)
-{
- BOOLEAN status;
- tOBX_TRIPLET triplet[OBX_MAX_NUM_AUTH_TRIPLET];
- UINT8 num_trip = OBX_MAX_NUM_AUTH_TRIPLET;
- UINT8 xx;
-
- /* The coverity complaints on this function is not correct.
- * The value in triplet[] is set/initialized by OBX_ReadTriplet if it returns TRUE.
- * leave this unnecessary memset here */
- memset( triplet, 0, sizeof(triplet ));
-
- *p_len = 0;
- *p_option = OBX_AO_NONE;
- *p_realm = NULL;
- *p_charset = OBX_RCS_ASCII; /* 0 */
- status = OBX_ReadTriplet(p_pkt, OBX_HI_CHALLENGE, triplet, &num_trip);
- if(status)
- {
- for(xx=0; xx<num_trip; xx++)
- {
- switch(triplet[xx].tag)
- {
- case OBX_OPTIONS_CHLNG_TAG:
- *p_option = triplet[xx].p_array[0];
- break;
- case OBX_REALM_CHLNG_TAG:
- *p_charset = triplet[xx].p_array[0];
- *p_len = triplet[xx].len - 1;
- *p_realm = &(triplet[xx].p_array[1]);
- break;
- /* The user does not need to know the nonce value
- case OBX_NONCE_CHLNG_TAG:
- break;
- */
- }
- }
- }
-
- return status;
-}
-#endif
-
-
-
-#if (OBX_SERVER_INCLUDED == TRUE)
-/*******************************************************************************
-**
-** Function OBX_ReadAuthParams
-**
-** Description This function is called by the server to read the User ID of
-** the Authentication Response Header in the given OBEX packet
-** ( from an OBX_PASSWORD_EVT event).
-** This function also
-** checks if the authentication challenge header exists and
-** checks the authentication challenge options.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadAuthParams(BT_HDR *p_pkt, UINT8 **p_userid, UINT8 *p_len,
- BOOLEAN *is_challenged, tOBX_AUTH_OPT *p_option)
-{
- BOOLEAN status;
- tOBX_TRIPLET triplet[OBX_MAX_NUM_AUTH_TRIPLET];
- UINT8 num_trip = OBX_MAX_NUM_AUTH_TRIPLET;
- UINT8 xx;
-
- /* The coverity complaints on this function is not correct.
- * The value in triplet[] is set/initialized by OBX_ReadTriplet if it returns TRUE.
- * leave this unnecessary memset here */
- memset( triplet, 0, sizeof(triplet ));
-
- *p_userid = NULL;
- *p_len = 0;
- *is_challenged = FALSE;
- *p_option = OBX_AO_NONE;
- status = OBX_ReadTriplet(p_pkt, OBX_HI_AUTH_RSP, triplet, &num_trip);
- if(status)
- {
- /* found authentication response, but we do not know if it has user id.
- * assume no user id */
- *p_len = 0;
- for(xx=0; xx<num_trip; xx++)
- {
- if(triplet[xx].tag == OBX_USERID_RSP_TAG)
- {
- *p_len = triplet[xx].len;
- *p_userid = triplet[xx].p_array;
- break;
- }
- }
-
- /* read the authentication challenge header,
- * only if the authentication response header exists */
- if( OBX_ReadTriplet(p_pkt, OBX_HI_CHALLENGE, triplet, &num_trip) == TRUE)
- {
- *is_challenged = TRUE;
- for(xx=0; xx<num_trip; xx++)
- {
- if(triplet[xx].tag == OBX_OPTIONS_CHLNG_TAG)
- {
- *p_option = triplet[xx].p_array[0];
- break;
- }
- }
- }
- }
- return status;
-}
-#endif
-
-
-
diff --git a/stack/obx/hdrs/obx_dbtp.c b/stack/obx/hdrs/obx_dbtp.c
deleted file mode 100644
index fbf473d..0000000
--- a/stack/obx/hdrs/obx_dbtp.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dbtp.c
-**
-** File: OBEX Headers Decode Utility functions
-** - for current Bluetooth profiles
-**
-** Copyright (c) 2003-2008, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-#include "bt_target.h"
-#include "obx_api.h"
-#include "obx_int.h"
-
-
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadTypeHdr
-**
-** Description This function is called to get the Type Header in the given
-** OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadTypeHdr(BT_HDR *p_pkt, UINT8 **p_type, UINT16 *p_len)
-{
- return OBX_ReadByteStrHdr(p_pkt, OBX_HI_TYPE, p_type, p_len, 0);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadLengthHdr
-**
-** Description This function is called to get the Length Header in the given
-** OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadLengthHdr(BT_HDR *p_pkt, UINT32 *p_len)
-{
- return OBX_Read4ByteHdr(p_pkt, OBX_HI_LENGTH, p_len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadTargetHdr
-**
-** Description This function is called to get the Target Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadTargetHdr(BT_HDR *p_pkt, UINT8 **p_target, UINT16 *p_len, UINT8 next)
-{
- return OBX_ReadByteStrHdr(p_pkt, OBX_HI_TARGET, p_target, p_len, next);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadBodyHdr
-**
-** Description This function is called to get the Body Header in the
-** given OBEX packet.
-**
-** Returns 1, if a single header is in the OBEX packet.
-** 2, if a end of body header is in the OBEX packet.
-** 0, (FALSE) otherwise.
-**
-*******************************************************************************/
-UINT8 OBX_ReadBodyHdr(BT_HDR *p_pkt, UINT8 **p_body, UINT16 *p_len, BOOLEAN *p_end)
-{
- BOOLEAN status;
- UINT8 *p_body2;
- UINT16 len2;
- UINT8 num;
-
- *p_end = FALSE;
- num = OBX_ReadByteStrHdr(p_pkt, OBX_HI_BODY, p_body, p_len, 0);
- status = OBX_ReadByteStrHdr(p_pkt, OBX_HI_BODY_END, &p_body2, &len2, 0);
- if(num == FALSE && status == TRUE)
- {
- *p_body = p_body2;
- *p_len = len2;
- *p_end = TRUE;
- }
- num += status;
-
- return num;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadWhoHdr
-**
-** Description This function is called to get the Who Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadWhoHdr(BT_HDR *p_pkt, UINT8 **p_who, UINT16 *p_len)
-{
- return OBX_ReadByteStrHdr(p_pkt, OBX_HI_WHO, p_who, p_len, 0);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadAppParamHdr
-**
-** Description This function is called to get the Application Parameter Header
-** in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadAppParamHdr(BT_HDR *p_pkt, UINT8 *p_tag, UINT8 **p_app_param, UINT8 *p_len, UINT8 next)
-{
- BOOLEAN status;
- tOBX_TRIPLET triplet[OBX_MAX_TRIPLET];
- UINT8 num = OBX_MAX_TRIPLET;
-
- /* The coverity complaints on this function is not correct.
- * The value in triplet[] is set/initialized by OBX_ReadTriplet if it returns TRUE.
- * leave this unnecessary memset here */
- memset( triplet, 0, sizeof(triplet ));
-
- status = OBX_ReadTriplet(p_pkt, OBX_HI_APP_PARMS, triplet, &num);
- if(status == TRUE)
- {
- if(next >= num)
- {
- status = FALSE;
- }
- else
- {
- *p_tag = triplet[next].tag;
- *p_app_param = triplet[next].p_array;
- *p_len = triplet[next].len;
- OBX_TRACE_DEBUG3( "OBX_ReadAppParamHdr: next: %d, tag: %x, len: %d",
- next, *p_tag, *p_len);
- }
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadPermissionHdr
-**
-** Description This function is called to get the Application Parameter Header
-** in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadPermissionHdr(BT_HDR *p_pkt, UINT8 *p_user, UINT8 *p_group, UINT8 *p_other)
-{
- UINT32 permission;
- BOOLEAN status = FALSE;
-
- if (OBX_Read4ByteHdr(p_pkt, OBX_HI_PERMISSION, &permission))
- {
- *p_other = (permission & 0xFF);
- permission >>= 8;
- *p_group = (permission & 0xFF);
- permission >>= 8;
- *p_user = (permission & 0xFF);
- status = TRUE;
- }
-
- return status;
-}
-
-
-
-
diff --git a/stack/obx/hdrs/obx_dopt.c b/stack/obx/hdrs/obx_dopt.c
deleted file mode 100644
index e3d0d27..0000000
--- a/stack/obx/hdrs/obx_dopt.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dopt.c
-**
-** File: OBEX Headers Decode Utility functions
-** - optional functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-
-
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadTimeHdr
-**
-** Description This function is called to get the Time Header in the given
-** OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadTimeHdr(BT_HDR *p_pkt, UINT8 **p_time, UINT16 *p_len)
-{
- return OBX_ReadByteStrHdr(p_pkt, OBX_HI_TIME, p_time, p_len, 0);
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadHttpHdr
-**
-** Description This function is called to get the HTTP Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadHttpHdr(BT_HDR *p_pkt, UINT8 **p_http, UINT16 *p_len, UINT8 next)
-{
- return OBX_ReadByteStrHdr(p_pkt, OBX_HI_HTTP, p_http, p_len, next);
-}
-
diff --git a/stack/obx/hdrs/obx_dunic.c b/stack/obx/hdrs/obx_dunic.c
deleted file mode 100644
index c8f6b12..0000000
--- a/stack/obx/hdrs/obx_dunic.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dunic.c
-**
-** File: OBEX Headers Decode Utility functions
-** - Unicode functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadNameHdr
-**
-** Description This function is called to get the Name Header in the given
-** OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadNameHdr(BT_HDR *p_pkt, UINT16 *p_name, UINT16 *p_len)
-{
- return OBX_ReadUnicodeHdr(p_pkt, OBX_HI_NAME, p_name, p_len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadDescrHdr
-**
-** Description This function is called to get the Description Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadDescrHdr(BT_HDR *p_pkt, UINT16 *p_descr, UINT16 *p_len)
-{
- return OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_descr, p_len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadDestNameHdr
-**
-** Description This function is called to get the DestName Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadDestNameHdr(BT_HDR *p_pkt, UINT16 *p_dest, UINT16 *p_len)
-{
- return OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_dest, p_len);
-}
diff --git a/stack/obx/hdrs/obx_dutf.c b/stack/obx/hdrs/obx_dutf.c
deleted file mode 100644
index a800428..0000000
--- a/stack/obx/hdrs/obx_dutf.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dutf.c
-**
-** File: OBEX Headers Decode Utility functions
-** - Unicode conversion functions
-**
-** Copyright (c) 2003-2009, Broadcom Corp., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "gki.h"
-#include "obx_api.h"
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadUtf8NameHdr
-**
-** Description This function is called to get the Name Header in the given
-** OBEX packet. If Name header exists in the given OBEX packet,
-** it is converted to UTF8 format and copied into p_name.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadUtf8NameHdr(BT_HDR *p_pkt, UINT8 *p_name, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_NAME, p_unicode, &len);
- utfc_16_to_8(p_name, max_len, p_unicode, len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadUtf8DescrHdr
-**
-** Description This function is called to get the Description Header in the
-** given OBEX packet. If Description header exists in the given
-** OBEX packet, it is converted to UTF8 format and copied into
-** p_descr.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadUtf8DescrHdr(BT_HDR *p_pkt, UINT8 *p_descr, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_unicode, &len);
- utfc_16_to_8(p_descr, max_len, p_unicode, len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadUtf8DestNameHdr
-**
-** Description This function is called to get the DestName Header in the
-** given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadUtf8DestNameHdr(BT_HDR *p_pkt, UINT8 *p_dest, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_unicode, &len);
- utfc_16_to_8(p_dest, max_len, p_unicode, len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-
diff --git a/stack/obx/hdrs/obx_dwchar.c b/stack/obx/hdrs/obx_dwchar.c
deleted file mode 100644
index 2aa5ebd..0000000
--- a/stack/obx/hdrs/obx_dwchar.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_dwchar.c
-**
-** File: OBEX Headers Decode Utility functions
-** - Unicode conversion functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "gki.h"
-#include "obx_api.h"
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadAsciiNameHdr
-**
-** Description This function is called to get the Name Header in the given
-** OBEX packet. If Name header exists in the given OBEX packet,
-** it is converted to ASCII format and copied into p_name.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadAsciiNameHdr(BT_HDR *p_pkt, char *p_name, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_NAME, p_unicode, &len);
- OBX_WcharToChar(p_name, p_unicode, max_len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-
-
-/*******************************************************************************
-**
-** Function OBX_ReadAsciiDescrHdr
-**
-** Description This function is called to get the Description Header in the
-** given OBEX packet. If Description header exists in the given
-** OBEX packet, it is converted to ASCII format and copied into
-** p_descr.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadAsciiDescrHdr(BT_HDR *p_pkt, char *p_descr, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_unicode, &len);
- OBX_WcharToChar(p_descr, p_unicode, max_len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadAsciiDestNameHdr
-**
-** Description This function is called to get the DestName Header in the
-** given OBEX packet. If DestName header exists in the given
-** OBEX packet, it is converted to ASCII format and copied into
-** p_descr.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadAsciiDestNameHdr(BT_HDR *p_pkt, char *p_dest, UINT16 max_len)
-{
- BOOLEAN status;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)((max_len + 1) * 2));
- UINT16 len = max_len;
-
- status = OBX_ReadUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_unicode, &len);
- OBX_WcharToChar(p_dest, p_unicode, max_len);
- GKI_freebuf(p_unicode);
- return status;
-}
diff --git a/stack/obx/hdrs/obx_ebtp.c b/stack/obx/hdrs/obx_ebtp.c
deleted file mode 100644
index 93dd988..0000000
--- a/stack/obx/hdrs/obx_ebtp.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_ebtp.c
-**
-** File: OBEX Headers Encode Utility functions
-** - for current Bluetooth profiles
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-
-/*******************************************************************************
-**
-** Function OBX_AddTypeHdr
-**
-** Description This function is called to add an OBEX Type header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddTypeHdr(BT_HDR *p_pkt, char *p_type)
-{
- return OBX_AddByteStrHdr(p_pkt, OBX_HI_TYPE, (UINT8*)p_type, (UINT16)(strlen(p_type)+1));
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddLengthHdr
-**
-** Description This function is called to add an OBEX Length header to an OBEX
-** packet. The Length header describes the total length in bytes of
-** the object.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddLengthHdr(BT_HDR *p_pkt, UINT32 len)
-{
- return OBX_Add4ByteHdr(p_pkt, OBX_HI_LENGTH, len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddTargetHdr
-**
-** Description This function is called to add an OBEX Target header to an OBEX
-** packet. This header is most commonly used in Connect packets.
-**
-** NOTE: The target header must be the first header in an OBEX message.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddTargetHdr(BT_HDR *p_pkt, UINT8 *p_target, UINT16 len)
-{
- BOOLEAN add = FALSE;
- UINT8 *p;
-
- if (p_pkt->len == 0)
- {
- add = TRUE;
- }
- else if (p_pkt->len == 2)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset;
- if ((*p) == OBX_HI_SESSION_SN)
- add = TRUE;
-
- }
- /* allow SSN to preceed target header */
- if (add)
- return OBX_AddByteStrHdr(p_pkt, OBX_HI_TARGET, p_target, len);
- else
- {
- BT_ERROR_TRACE_1(TRACE_LAYER_OBEX, "Target header must be the first:%d", p_pkt->len) ;
- return FALSE;
- }
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddBodyHdr
-**
-** Description This function is called to add an OBEX body header
-** to an OBEX packet.
-**
-** NOTE: The body header must be the last header in an OBEX message.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddBodyHdr(BT_HDR *p_pkt, UINT8 *p_body, UINT16 len, BOOLEAN end)
-{
- UINT8 id = (end)?OBX_HI_BODY_END:OBX_HI_BODY;
- return OBX_AddByteStrHdr(p_pkt, id, p_body, len);
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_AddWhoHdr
-**
-** Description This function is called to add an OBEX Who header to an OBEX
-** packet.
-**
-** Note: Who header is typically used in an OBEX CONNECT response packet
-** to indicate the UUID of the service that has accepted the
-** directed connection. If the server calls OBX_StartServer() with
-** specified target header, this OBEX implementation automatically
-** adds this WHO header to the CONNECT response packet. If
-** OBX_StartServer() is called with target header length as 0, the
-** OBEX API user is responsible to add the WHO header.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddWhoHdr(BT_HDR *p_pkt, UINT8 *p_who, UINT16 len)
-{
- return OBX_AddByteStrHdr(p_pkt, OBX_HI_WHO, p_who, len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddAppParamHdr
-**
-** Description This function is called to add an OBEX Application Parameter
-** header to an OBEX packet. This header is used by the application
-** layer above OBEX to convey application specific information.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddAppParamHdr(BT_HDR *p_pkt, tOBX_TRIPLET *p_triplet, UINT8 num)
-{
- return OBX_AddTriplet(p_pkt, OBX_HI_APP_PARMS, p_triplet, num);
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddPermissionHdr
-**
-** Description This function is called to add an OBEX Permission header to an OBEX
-** packet.
-** bit 0 is set for read permission
-** bit 1 is set for write permission
-** bit 2 is set for delete permission
-** bit 7 is set for modify permission
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddPermissionHdr(BT_HDR *p_pkt, UINT8 user, UINT8 group, UINT8 other)
-{
- UINT32 permission = user;
- permission <<= 8;
- permission |= group;
- permission <<= 8;
- permission |= other;
- return OBX_Add4ByteHdr(p_pkt, OBX_HI_PERMISSION, permission);
-}
-
-
diff --git a/stack/obx/hdrs/obx_eopt.c b/stack/obx/hdrs/obx_eopt.c
deleted file mode 100644
index e0b0487..0000000
--- a/stack/obx/hdrs/obx_eopt.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_eopt.c
-**
-** File: OBEX Headers Encode Utility functions
-** - optional functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-
-/*******************************************************************************
-**
-** Function OBX_AddTimeHdr
-**
-** Description This function is called to add an OBEX Time header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddTimeHdr(BT_HDR *p_pkt, char *p_time)
-{
- return OBX_AddByteStrHdr(p_pkt, OBX_HI_TIME, (UINT8 *)p_time, (UINT16)strlen(p_time));
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_AddHttpHdr
-**
-** Description This function is called to add an OBEX HTTP header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddHttpHdr(BT_HDR *p_pkt, UINT8 *p_http, UINT16 len)
-{
- return OBX_AddByteStrHdr(p_pkt, OBX_HI_HTTP, p_http, len);
-}
-
-
diff --git a/stack/obx/hdrs/obx_eunic.c b/stack/obx/hdrs/obx_eunic.c
deleted file mode 100644
index 6b5cb29..0000000
--- a/stack/obx/hdrs/obx_eunic.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_eunic.c
-**
-** File: OBEX Headers Encode Utility functions
-** - Unicode functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "obx_api.h"
-
-
-/*******************************************************************************
-**
-** Function OBX_AddNameHdr
-**
-** Description This function is called to add an OBEX Name header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddNameHdr(BT_HDR *p_pkt, UINT16 *p_name, UINT16 len)
-{
- return OBX_AddUnicodeHdr(p_pkt, OBX_HI_NAME, p_name, len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddDescrHdr
-**
-** Description This function is called to add an OBEX Description header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddDescrHdr(BT_HDR *p_pkt, UINT16 *p_descr, UINT16 len)
-{
- return OBX_AddUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_descr, len);
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddDestNameHdr
-**
-** Description This function is called to add an OBEX DestName header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddDestNameHdr(BT_HDR *p_pkt, UINT16 *p_dest, UINT16 len)
-{
- return OBX_AddUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_dest, len);
-}
-
-
diff --git a/stack/obx/hdrs/obx_eutf.c b/stack/obx/hdrs/obx_eutf.c
deleted file mode 100644
index b298500..0000000
--- a/stack/obx/hdrs/obx_eutf.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_eutf.c
-**
-** File: OBEX Headers Encode Utility functions
-** - Unicode conversion functions
-**
-** Copyright (c) 2003-2005, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-#include "bt_target.h"
-#include "gki.h"
-#include "obx_api.h"
-
-
-/*******************************************************************************
-**
-** Function OBX_AddUtf8NameHdr
-**
-** Description This function is called to add an OBEX Name header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddUtf8NameHdr(BT_HDR *p_pkt, UINT8 *p_name)
-{
- BOOLEAN status = FALSE;
- UINT16 utf16_len = 0;
- UINT16 *p_utf16 = NULL;
-
- if (p_name)
- {
- utf16_len = strlen((char *)p_name) * 2 + 2;
- p_utf16 = (UINT16 *)GKI_getbuf(utf16_len);
- }
-
- if (p_utf16)
- utf16_len = utfc_8_to_16(p_utf16, utf16_len, p_name);
- else
- utf16_len = 0;
-
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_NAME, p_utf16, utf16_len);
-
- if (p_utf16)
- GKI_freebuf(p_utf16);
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddUtf8DescrHdr
-**
-** Description This function is called to add an OBEX Description header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddUtf8DescrHdr(BT_HDR *p_pkt, UINT8 *p_descr)
-{
- BOOLEAN status = FALSE;
- UINT16 utf16_len;
- UINT16 *p_utf16;
-
- utf16_len = strlen((char *)p_descr) * 2 + 2;
- p_utf16 = (UINT16 *)GKI_getbuf(utf16_len);
- if(p_utf16)
- {
- utf16_len = utfc_8_to_16(p_utf16, utf16_len, p_descr);
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_utf16, utf16_len);
- GKI_freebuf(p_utf16);
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddUtf8DestNameHdr
-**
-** Description This function is called to add an OBEX DestName header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddUtf8DestNameHdr(BT_HDR *p_pkt, UINT8 *p_dest)
-{
- BOOLEAN status = FALSE;
- UINT16 utf16_len;
- UINT16 *p_utf16;
-
- utf16_len = strlen((char *)p_dest) * 2 + 2;
- p_utf16 = (UINT16 *)GKI_getbuf(utf16_len);
- if(p_utf16)
- {
- utf16_len = utfc_8_to_16(p_utf16, utf16_len, p_dest);
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_utf16, utf16_len);
- GKI_freebuf(p_utf16);
- }
- return status;
-}
-
-
-
diff --git a/stack/obx/hdrs/obx_ewchar.c b/stack/obx/hdrs/obx_ewchar.c
deleted file mode 100644
index 2025baa..0000000
--- a/stack/obx/hdrs/obx_ewchar.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_ewchar.c
-**
-** File: OBEX Headers Encode Utility functions
-** - Unicode conversion functions
-**
-** Copyright (c) 2003-2005, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-#include "bt_target.h"
-#include "gki.h"
-#include "obx_api.h"
-
-/*******************************************************************************
-**
-** Function OBX_AddAsciiNameHdr
-**
-** Description This function is called to add an OBEX Name header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddAsciiNameHdr(BT_HDR *p_pkt, char *p_name)
-{
- BOOLEAN status;
- UINT16 len = 0;
- UINT16 *p_unicode = NULL;
-
- if(p_name)
- {
- len = strlen(p_name) + 1;
- p_unicode = (UINT16 *)GKI_getbuf((UINT16)(len*2));
- }
-
- if(p_unicode)
- len = OBX_CharToWchar(p_unicode, p_name, len);
- else
- len = 0;
-
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_NAME, p_unicode, len);
-
- if(p_unicode)
- GKI_freebuf(p_unicode);
- return status;
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_AddAsciiDescrHdr
-**
-** Description This function is called to add an OBEX Description header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddAsciiDescrHdr(BT_HDR *p_pkt, char *p_descr)
-{
- BOOLEAN status;
- UINT16 len = strlen(p_descr) + 1;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)(len*2));
-
- len = OBX_CharToWchar(p_unicode, p_descr, len);
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_DESCRIPTION, p_unicode, len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddAsciiDestNameHdr
-**
-** Description This function is called to add an OBEX DestName header
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddAsciiDestNameHdr(BT_HDR *p_pkt, char *p_dest)
-{
- BOOLEAN status;
- UINT16 len = strlen(p_dest) + 1;
- UINT16 *p_unicode = (UINT16 *)GKI_getbuf((UINT16)(len*2));
-
- len = OBX_CharToWchar(p_unicode, p_dest, len);
- status = OBX_AddUnicodeHdr(p_pkt, OBX_HI_DEST_NAME, p_unicode, len);
- GKI_freebuf(p_unicode);
- return status;
-}
-
-
-
diff --git a/stack/obx/hdrs/obx_gen.c b/stack/obx/hdrs/obx_gen.c
deleted file mode 100644
index 9b25e04..0000000
--- a/stack/obx/hdrs/obx_gen.c
+++ /dev/null
@@ -1,896 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_gen.c
-**
-** File: OBEX Headers Utility functions
-** - common/generic functions
-**
-** Copyright (c) 2003-2011, Broadcom Corp., All Rights Reserved.
-** Broadcom Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include <string.h>
-
-#include "bt_target.h"
-#include "wcassert.h"
-#include "obx_api.h"
-#include "gki.h"
-#include "obx_int.h"
-
-const UINT8 obx_hdr_start_offset[] =
-{
- OBX_CONN_HDRS_OFFSET, /* OBX_CONNECT_REQ_EVT */
- OBX_SESS_HDRS_OFFSET, /* OBX_SESSION_REQ_EVT */
- OBX_DISCON_HDRS_OFFSET, /* OBX_DISCONNECT_REQ_EVT */
- OBX_PUT_HDRS_OFFSET, /* OBX_PUT_REQ_EVT */
- OBX_GET_HDRS_OFFSET, /* OBX_GET_REQ_EVT */
- OBX_SETPATH_REQ_HDRS_OFFSET,/* OBX_SETPATH_REQ_EVT */
- OBX_ABORT_HDRS_OFFSET, /* OBX_ABORT_REQ_EVT */
- OBX_ACTION_HDRS_OFFSET, /* OBX_ACTION_REQ_EVT */
- OBX_CONN_HDRS_OFFSET, /* OBX_CONNECT_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_SESSION_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_DISCONNECT_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_PUT_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_GET_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_SETPATH_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET, /* OBX_ABORT_RSP_EVT */
- OBX_RESPONSE_HDRS_OFFSET /* OBX_ACTION_RSP_EVT */
-};
-
-/*******************************************************************************
-**
-** Function obx_access_rsp_code
-**
-** Description This function is used to read/change response code
-**
-** Returns void.
-**
-*******************************************************************************/
-void obx_access_rsp_code(BT_HDR *p_pkt, UINT8 *p_rsp_code)
-{
- UINT8 *p = (UINT8 *)(p_pkt + 1) + p_pkt->offset;
- if(*p_rsp_code == OBX_RSP_DEFAULT)
- *p_rsp_code = *p;
- else
- *p = *p_rsp_code;
-}
-
-/*******************************************************************************
-**
-** Function obx_adjust_packet_len
-**
-** Description Adjust the packet length in the OBEX packet
-**
-** Returns void.
-**
-*******************************************************************************/
-void obx_adjust_packet_len(BT_HDR *p_pkt)
-{
- UINT8 *p = (UINT8 *)(p_pkt + 1) + p_pkt->offset + 1;
- UINT16_TO_BE_STREAM(p, p_pkt->len);
-}
-
-/*******************************************************************************
-**
-** Function obx_read_header_len
-**
-** Description ph is the beginning of an OBEX header
-**
-** Returns total length of the header
-**
-*******************************************************************************/
-UINT16 obx_read_header_len(UINT8 *ph)
-{
- UINT16 len = 0;
-
- /*
- OBX_TRACE_DEBUG1( "obx_read_header_len: 0x%x", *ph);
- */
- switch(*ph&OBX_HI_TYPE_MASK)
- {
- case OBX_HI_TYPE_BYTE:
- len = 2;
- break;
- case OBX_HI_TYPE_INT:
- len = 5;
- break;
- case OBX_HI_TYPE_ARRAY:
- case OBX_HI_TYPE_UNIC:
- ph++;
- BE_STREAM_TO_UINT16(len, ph);
- break;
- }
- /*
- OBX_TRACE_DEBUG1( "len:%d", len);
- */
- return len;
-}
-
-/*******************************************************************************
-**
-** Function obx_dup_pkt
-**
-** Description This function duplicate the OBEX message
-**
-** Returns BT_HDR *.
-**
-*******************************************************************************/
-BT_HDR * obx_dup_pkt(BT_HDR *p_pkt)
-{
- BT_HDR *p_new;
- UINT16 size = p_pkt->len + p_pkt->offset + BT_HDR_SIZE;
-
- if (size < GKI_MAX_BUF_SIZE)
- {
- /* Use the largest general pool to allow challenge tags appendage */
- p_new = (BT_HDR *)GKI_getbuf(GKI_MAX_BUF_SIZE);
- }
- else
- {
- p_new = (BT_HDR *) GKI_getpoolbuf(OBX_LRG_DATA_POOL_ID);
- }
-
- if (p_new)
- memcpy(p_new, p_pkt, size );
-
- return p_new;
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_HdrInit
-**
-** Description This function is called to initialize an OBEX packet. This
-** function takes a GKI buffer and sets the offset in BT_HDR as
-** OBX_HDR_OFFSET, the len as 0. The layer_specific is set to the
-** length still available. This function compares the given
-** (pkt_size - BT_HDR_SIZE) with the peer MTU to get the lesser
-** of the two and set the layer_specific to
-** (lesser_size - OBX_HDR_OFFSET).
-** If composing a header for the CONNECT request (there is no
-** client handle yet), use OBX_HANDLE_NULL as the handle.
-**
-** If the pkt_size is larger than the largest public pool size,
-** GKI_MAX_BUF_SIZE, then an attempt to grab a buffer from the reserved OBX
-** data pool will be made.
-** Returns BT_HDR *.
-**
-*******************************************************************************/
-BT_HDR *OBX_HdrInit(tOBX_HANDLE handle, UINT16 pkt_size)
-{
- UINT16 mtu = OBX_HandleToMtu(handle);
- BT_HDR *p_pkt = NULL;
- UINT16 buf_size;
-#if (BT_USE_TRACES == TRUE)
- UINT16 req_size = pkt_size;
-#endif
-
- WC_ASSERT(pkt_size > (BT_HDR_SIZE + OBX_HDR_OFFSET));
-
- pkt_size -= BT_HDR_SIZE;
- if(pkt_size > mtu )
- pkt_size = mtu;
- pkt_size += (BT_HDR_SIZE + OBX_HDR_OFFSET);
-
- OBX_TRACE_DEBUG4( "OBX_HdrInit: checking req_size %d, pkt_size:%d, max:%d, offset:%d",
- req_size, pkt_size, GKI_MAX_BUF_SIZE, OBX_HDR_OFFSET);
- /* See if packet will fit in regular public pool */
- if ((pkt_size) < GKI_MAX_BUF_SIZE)
- {
- p_pkt = (BT_HDR *) GKI_getbuf(pkt_size);
- }
- else /* Must use the reserved OBX buffer pool */
- {
- p_pkt = (BT_HDR *) GKI_getpoolbuf(OBX_LRG_DATA_POOL_ID);
- if (!p_pkt)
- {
- OBX_TRACE_DEBUG1( "Out of Large buffers. Trying pkt_size:%d", GKI_MAX_BUF_SIZE);
- p_pkt = (BT_HDR *) GKI_getbuf(GKI_MAX_BUF_SIZE);
- }
- }
-
- if(p_pkt)
- {
- buf_size = GKI_get_buf_size(p_pkt);
- buf_size -= BT_HDR_SIZE;
- if(buf_size > mtu)
- buf_size = mtu;
-
- OBX_TRACE_DEBUG4( "OBX_HdrInit: req_size %d, pkt_size = %d, gki_size %d, buf_size %d",
- req_size, pkt_size, GKI_get_buf_size(p_pkt), buf_size);
-
- p_pkt->offset = OBX_HDR_OFFSET;
- p_pkt->len = 0;
- p_pkt->event = 0;
-
- /* layer specific contains remaining space in packet */
- p_pkt->layer_specific = buf_size - OBX_HDR_OFFSET ;
- p_pkt->layer_specific -= 2;
-
- OBX_TRACE_DEBUG2( "buf size: %d, ls:%d", buf_size, p_pkt->layer_specific);
- }
- else
- {
- OBX_TRACE_ERROR1("OBX_HdrInit: No buffers for size (%d)", pkt_size);
- }
-
- return p_pkt;
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_Add1ByteHdr
-**
-** Description This function is called to add a header with type as UINT8
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_Add1ByteHdr(BT_HDR *p_pkt, UINT8 id, UINT8 data)
-{
- UINT8 *p;
- BOOLEAN status = FALSE;
- UINT16 size = 2; /* total length added by this header - 1/hi & 1/hv */
-
- if(p_pkt)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset+p_pkt->len;
- /* verify that the HI is of correct type and the remaining length in the packet is good */
- if( ((id & OBX_HI_TYPE_MASK) == OBX_HI_TYPE_BYTE) && (p_pkt->layer_specific >= size) )
- {
- *p++ = id;
- *p++ = data;
-
- p_pkt->len += size;
- p_pkt->layer_specific -= size;
- status = TRUE;
- }
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_Add4ByteHdr
-**
-** Description This function is called to add a header with type as UINT32
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_Add4ByteHdr(BT_HDR *p_pkt, UINT8 id, UINT32 data)
-{
- UINT8 *p;
- BOOLEAN status = FALSE;
- UINT16 size = 5; /* total length added by this header - 1/hi & 4/hv */
-
- if(p_pkt)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset+p_pkt->len;
- /* verify that the HI is of correct type and the remaining length in the packet is good */
- if( ((id & OBX_HI_TYPE_MASK) == OBX_HI_TYPE_INT) && (p_pkt->layer_specific >= size) )
- {
- *p++ = id;
- UINT32_TO_BE_STREAM(p, data);
-
- p_pkt->len += size;
- p_pkt->layer_specific -= size;
- status = TRUE;
- }
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddByteStrStart
-**
-** Description This function is called to get the address to the beginning of
-** the byte sequence for an OBEX header in an OBEX packet.
-**
-** Returns The address to add the byte sequence.
-**
-*******************************************************************************/
-UINT8 *OBX_AddByteStrStart(BT_HDR *p_pkt, UINT16 *p_len)
-{
- UINT8 *p = (UINT8 *)(p_pkt + 1) + p_pkt->offset + p_pkt->len + 3;
-
- WC_ASSERT(p_len);
-
- if(*p_len > (p_pkt->layer_specific - 3) || *p_len == 0)
- *p_len = p_pkt->layer_specific - 3;
- return p;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddByteStrHdr
-**
-** Description This function is called to add a header with type as byte sequence
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddByteStrHdr(BT_HDR *p_pkt, UINT8 id, UINT8 *p_data, UINT16 len)
-{
- UINT8 *p;
- BOOLEAN status = FALSE;
- UINT16 size = (len+3); /* total length added by this header - 1/hi & len+2/hv */
-
- if(p_pkt)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset+p_pkt->len;
- /* verify that the HI is of correct type and the remaining length in the packet is good */
- if( ((id & OBX_HI_TYPE_MASK) == OBX_HI_TYPE_ARRAY) && (p_pkt->layer_specific >= size) )
- {
- *p++ = id;
- UINT16_TO_BE_STREAM(p, size);
- if(p_data)
- memcpy(p, p_data, len);
-
- p_pkt->len += size;
- p_pkt->layer_specific -= size;
- status = TRUE;
- }
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddUnicodeHdr
-**
-** Description This function is called to add a header with type as Unicode string
-** to an OBEX packet.
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddUnicodeHdr(BT_HDR *p_pkt, UINT8 id, UINT16 *p_data, UINT16 len)
-{
- UINT8 *p;
- BOOLEAN status = FALSE;
- UINT16 size, xx;
-
- if(p_pkt)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset+p_pkt->len;
- size = (len*OBX_UNICODE_SIZE + 3); /* total length added by this header - 1/hi & len*OBX_UNICODE_SIZE+2/hv */
- OBX_TRACE_DEBUG4( "OBX_AddUnicodeHdr len: %d, size: %d, left: %d, id: 0x%x",
- len, size, p_pkt->layer_specific, id );
-
- /* verify that the HI is of correct type and the remaining length in the packet is good */
- if( ((id & OBX_HI_TYPE_MASK) == OBX_HI_TYPE_UNIC) && (p_pkt->layer_specific >= size) )
- {
- *p++ = id;
- UINT16_TO_BE_STREAM(p, size);
- for(xx=0; xx<len; xx++)
- {
- UINT16_TO_BE_STREAM(p, *p_data);
- p_data++;
- }
-
- p_pkt->len += size;
- p_pkt->layer_specific -= size;
- status = TRUE;
- }
- }
-
- return status;
-}
-
-/* Alternate Body header functions: for non-blocking scenario */
-/*******************************************************************************
-**
-** Function OBX_AddBodyStart
-**
-** Description This function is called to get the address to the beginning of
-** the byte sequence for an OBEX body header in an OBEX packet.
-**
-** Returns The address to add body content.
-**
-*******************************************************************************/
-UINT8 *OBX_AddBodyStart(BT_HDR *p_pkt, UINT16 *p_len)
-{
- UINT8 *p = (UINT8 *)(p_pkt + 1) + p_pkt->offset + p_pkt->len + 3;
-
- WC_ASSERT(p_len);
-
- if(*p_len > (p_pkt->layer_specific - 3) || *p_len == 0)
- *p_len = p_pkt->layer_specific - 3;
- return p;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddBodyEnd
-**
-** Description This function is called to add the HI and the length of HV of an
-** OBEX body header to an OBEX packet. If end is TRUE, HI is
-** OBX_HI_BODY_END. If FALSE, HI is OBX_HI_BODY. It is assumed that
-** the actual value of the body has been copied into the OBEX packet.
-**
-** Returns void
-**
-*******************************************************************************/
-void OBX_AddBodyEnd(BT_HDR *p_pkt, UINT8 *p, UINT16 len, BOOLEAN end)
-{
- UINT8 id = (end)?OBX_HI_BODY_END:OBX_HI_BODY;
- UINT8 *pb = (UINT8 *)(p_pkt + 1) + p_pkt->offset + p_pkt->len;
- *pb++ = id;
- len += 3; /* 1/hi, 2/hv_len */
- UINT16_TO_BE_STREAM(pb, len);
- p_pkt->layer_specific -= len;
- p_pkt->len += len;
-}
-
-/*******************************************************************************
-**
-** Function OBX_AddTriplet
-**
-** Description This function is called to add a header with type as byte sequence
-** to an OBEX packet.
-**
-** Note: The byte sequence uses a Tag-Length-Value encoding scheme
-** These headers include: Application Parameters header
-** Authenticate Challenge header
-** Authenticate Response header
-**
-** Returns TRUE, if the header is added successfully.
-** FALSE, if the operation failed. p_pkt is not altered.
-**
-*******************************************************************************/
-BOOLEAN OBX_AddTriplet(BT_HDR *p_pkt, UINT8 id, tOBX_TRIPLET *p_triplet, UINT8 num)
-{
- UINT8 *p = (UINT8 *)(p_pkt+1)+p_pkt->offset+p_pkt->len;
- BOOLEAN status = FALSE;
- UINT16 size = 3;/* 1/hi & len+2/hv */
- UINT8 xx;
-
- /* calculate the total length added by this header */
- for(xx=0; xx< num; xx++)
- size += (p_triplet[xx].len + 2);
-
- /* verify that the HI is of correct type and the remaining length in the packet is good */
- if( ((id & OBX_HI_TYPE_MASK) == OBX_HI_TYPE_ARRAY) && (p_pkt->layer_specific >= size) )
- {
- *p++ = id;
- UINT16_TO_BE_STREAM(p, size);
- for(xx=0; xx< num; xx++)
- {
- *p++ = p_triplet[xx].tag;
- *p++ = p_triplet[xx].len;
- memcpy(p, p_triplet[xx].p_array, p_triplet[xx].len);
- p += p_triplet[xx].len;
- }
- p_pkt->len += size;
- p_pkt->layer_specific -= size;
- status = TRUE;
- }
-
- return status;
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_CheckNext
-**
-** Description This function is called to check if the given OBEX packet
-** contains the specified header.
-**
-** Returns NULL, if the header is not in the OBEX packet.
-** The pointer to the specified header beginning from HI.
-**
-*******************************************************************************/
-UINT8 * OBX_CheckNext(BT_HDR *p_pkt, UINT8 *p_start, UINT8 id)
-{
- UINT8 *p;
- UINT8 *p_res = NULL;
- UINT16 len, start, skip;
- int remain;
-
- if(p_pkt != NULL && p_start != NULL)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset;
- if(p_pkt->event <= OBX_MAX_OFFSET_IND)
- {
- start = obx_hdr_start_offset[p_pkt->event-1];
- p++;
- BE_STREAM_TO_UINT16(len, p);
- remain = len - start;
- p = p - 3 + start;
-
- while(remain >0)
- {
- if(*p != id || p < p_start)
- {
- skip = obx_read_header_len(p);
- p += skip;
- /* Just in case this is a bad packet, make sure that remain is >= 0 */
- if(skip && (remain > skip))
- remain -= skip;
- else
- remain = 0;
- }
- else
- {
- p_res = p;
- break;
- }
- }
- }
- }
-
- if (p_pkt)
- {
- OBX_TRACE_DEBUG2( "OBX_CheckNext: remain: %d len:%d", remain, p_pkt->len);
- }
-
- return p_res;
-}
-
-
-/*******************************************************************************
-**
-** Function OBX_CheckHdr
-**
-** Description This function is called to check if the given OBEX packet
-** contains the specified header.
-**
-** Returns NULL, if the header is not in the OBEX packet.
-** The pointer to the specified header beginning from HI.
-**
-*******************************************************************************/
-UINT8 * OBX_CheckHdr(BT_HDR *p_pkt, UINT8 id)
-{
- UINT8 *p;
- UINT8 *p_res = NULL;
- UINT16 len, start, skip;
- int remain;
-
- if(p_pkt != NULL)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset;
- if(p_pkt->event <= OBX_MAX_OFFSET_IND)
- {
- start = obx_hdr_start_offset[p_pkt->event-1];
- p++;
- BE_STREAM_TO_UINT16(len, p);
- remain = len - start;
- p = p - 3 + start;
-
- while(remain >0)
- {
- if(*p != id)
- {
- skip = obx_read_header_len(p);
- p += skip;
- /* Just in case this is a bad packet, make sure that remain is >= 0 */
- if(skip && (remain > skip))
- remain -= skip;
- else
- remain = 0;
- }
- else
- {
- p_res = p;
- break;
- }
- }
- }
- }
-
- return p_res;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadNumHdrs
-**
-** Description This function is called to check the number of headers in the
-** given OBEX packet
-**
-** Returns number of headers.
-**
-*******************************************************************************/
-UINT8 OBX_ReadNumHdrs(BT_HDR *p_pkt, UINT8 *p_num_body)
-{
- UINT8 num_hdrs = 0, num_body = 0;
- UINT8 *p;
- UINT16 len, start, skip;
- int remain = 0;
-
- if(p_pkt != NULL)
- {
- p = (UINT8 *)(p_pkt+1)+p_pkt->offset;
- if(p_pkt->event == 0)
- {
- /* GKI buffer just went through OBX_HdrInit; not processed by the state machine yet */
- remain = len = p_pkt->len;
- }
- else if(p_pkt->event <= OBX_MAX_OFFSET_IND)
- {
- start = obx_hdr_start_offset[p_pkt->event-1];
- p++;
- BE_STREAM_TO_UINT16(len, p);
- remain = len - start;
- p = p - 3 + start;
- }
-
- while(remain >0)
- {
- num_hdrs++;
- if(*p == OBX_HI_BODY || *p == OBX_HI_BODY_END)
- num_body++;
-
- skip = obx_read_header_len(p);
- p += skip;
- /* Just in case this is a bad packet, make sure that remain is >= 0 */
- if(skip && (remain > skip))
- remain -= skip;
- else
- remain = 0;
-
- }
- }
- if (p_num_body)
- *p_num_body = num_body;
- return num_hdrs;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadHdrLen
-**
-** Description This function is called to check the length of the specified
-** header in the given OBEX packet.
-**
-** Returns OBX_INVALID_HDR_LEN, if the header is not in the OBEX packet.
-** Otherwise the actual length of the header.
-**
-*******************************************************************************/
-UINT16 OBX_ReadHdrLen(BT_HDR *p_pkt, UINT8 id)
-{
- UINT8 *p;
- UINT16 len = OBX_INVALID_HDR_LEN;
-
- if( (p = OBX_CheckHdr(p_pkt, id)) != NULL)
- len = obx_read_header_len(p);
-
- return len;
-}
-
-/*******************************************************************************
-**
-** Function OBX_Read1ByteHdr
-**
-** Description This function is called to get the UINT8 HV of the given HI
-** in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_Read1ByteHdr(BT_HDR *p_pkt, UINT8 id, UINT8 *p_data)
-{
- BOOLEAN status = FALSE;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, id);
-
- if(p_start)
- {
- *p_data = *(++p_start);
- status = TRUE;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_Read4ByteHdr
-**
-** Description This function is called to get the UINT32 HV of the given HI
-** in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_Read4ByteHdr(BT_HDR *p_pkt, UINT8 id, UINT32 *p_data)
-{
- BOOLEAN status = FALSE;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, id);
-
- if(p_start)
- {
- p_start++;
- BE_STREAM_TO_UINT32(*p_data, p_start);
- status = TRUE;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadByteStrHdr
-**
-** Description This function is called to get the byte sequence HV of the given
-** HI in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadByteStrHdr(BT_HDR *p_pkt, UINT8 id, UINT8 **p_data, UINT16 *p_len, UINT8 next)
-{
- BOOLEAN status = FALSE;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, id);
-
- if(p_start)
- {
- next += 1;
- while(next && (id == *p_start++))
- {
- next--;
- BE_STREAM_TO_UINT16(*p_len, p_start);
- if(next == 0)
- {
- status = TRUE;
- *p_len -= 3; /* get rid of hi and hv_len */
- *p_data = p_start;
- }
- else
- p_start = p_start + *p_len - 3;
- }
- }
- else
- {
- *p_len = 0;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadUnicodeHdr
-**
-** Description This function is called to get the Unicode HV of the given
-** HI in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadUnicodeHdr(BT_HDR *p_pkt, UINT8 id, UINT16 *p_data, UINT16 *p_len)
-{
- BOOLEAN status = FALSE;
- UINT16 len, xx, max_len;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, id);
-
- if(p_start)
- {
- max_len = *p_len;
- p_start++; /* 1/hi*/
- BE_STREAM_TO_UINT16(len, p_start);
- len -= 3; /* 1/hi, 2/hv_len */
- len /= OBX_UNICODE_SIZE; /* size in UINT16 */
- /* only conver the provided size */
- if( len > max_len)
- len = max_len;
- for(xx=0; xx<len; xx++)
- {
- BE_STREAM_TO_UINT16(*p_data, p_start);
- p_data++;
- }
- *p_len = len;
- status = TRUE;
- max_len -= len;
- while ( (p_start = OBX_CheckNext(p_pkt, p_start, id)) != NULL && (max_len > 0))
- {
- p_start++; /* 1/hi*/
- BE_STREAM_TO_UINT16(len, p_start);
- len -= 3; /* 1/hi, 2/hv_len */
- len /= OBX_UNICODE_SIZE; /* size in UINT16 */
- /* only conver the provided size */
- if( len > max_len)
- len = max_len;
- for(xx=0; xx<len; xx++)
- {
- BE_STREAM_TO_UINT16(*p_data, p_start);
- p_data++;
- }
- *p_len += len;
- max_len -= len;
- }
- }
- else
- {
- *p_len = 0;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadTriplet
-**
-** Description This function is called to get the Triplet HV of the given
-** HI in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadTriplet(BT_HDR *p_pkt, UINT8 id, tOBX_TRIPLET *p_triplet, UINT8 *p_num)
-{
- BOOLEAN status = FALSE;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, id);
- UINT16 len;
- UINT8 count = 0;
-
- if(p_start)
- {
- p_start++; /* 1/hi*/
- BE_STREAM_TO_UINT16(len, p_start);
- len -= 3; /* 1/hi, 2/hv_len */
- while(len && *p_num > count)
- {
- p_triplet[count].tag = *p_start++;
- p_triplet[count].len = *p_start++;
- OBX_TRACE_DEBUG3( "OBX_ReadTriplet: count: %d, tag: %x, len: %d",
- count, p_triplet[count].tag, p_triplet[count].len);
- p_triplet[count].p_array = p_start;
- p_start += p_triplet[count].len;
- if(len > (p_triplet[count].len + 2) )
- len -= (p_triplet[count].len + 2);
- else
- len = 0;
- count++;
- }
- status = TRUE;
- }
- *p_num = count;
- return status;
-}
-
-/*******************************************************************************
-**
-** Function OBX_ReadActionIdHdr
-**
-** Description This function is called to get the HV of the Action ID header
-** in the given OBEX packet.
-**
-** Returns TRUE, if the header is in the OBEX packet.
-** FALSE, otherwise.
-**
-*******************************************************************************/
-BOOLEAN OBX_ReadActionIdHdr(BT_HDR *p_pkt, UINT8 *p_data)
-{
- BOOLEAN status = FALSE;
- UINT8 *p_start = OBX_CheckHdr(p_pkt, OBX_HI_ACTION_ID);
-
- if(p_start)
- {
- p_start++;
- /* check for valid values: 0-2 */
- /* do not allow 0x80 - 0xFF (vendor extention) for now. */
- if (*p_start <= OBX_ACT_PERMISSION)
- {
- *p_data = *(p_start);
- status = TRUE;
- }
- }
- return status;
-}
diff --git a/stack/obx/hdrs/obx_wchar.c b/stack/obx/hdrs/obx_wchar.c
deleted file mode 100644
index 5364210..0000000
--- a/stack/obx/hdrs/obx_wchar.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*****************************************************************************
-**
-** Name: obx_wchar.c
-**
-** File: OBEX Headers Encode conversion Utility functions
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-** WIDCOMM Bluetooth Core. Proprietary and confidential.
-**
-*****************************************************************************/
-#include "bt_target.h"
-#include "gki.h"
-#include "obx_api.h"
-
-/*******************************************************************************
-**
-** Function OBX_CharToWchar
-**
-** Description This function is called to convert ASCII to Unicode (UINT16).
-**
-** Returns the length.
-**
-*******************************************************************************/
-UINT16 OBX_CharToWchar (UINT16 *w_str, char* a_str, UINT16 w_size)
-{
- UINT16 result = 0;
- int size = w_size;
-
- if (a_str == NULL || w_str == NULL)
- return 0;
-
- while (size > 0 && *a_str != '\0')
- {
- w_str[result++] = (UINT16) *a_str;
- a_str++;
- size--;
- }
-
- if (size > 0)
- {
- w_str[result] = 0;
- }
-
- return (result+1);
-}
-
-/*******************************************************************************
-**
-** Function OBX_WcharToChar
-**
-** Description This function is called to convert Unicode (UINT16) to ASCII.
-**
-** Returns void.
-**
-*******************************************************************************/
-void OBX_WcharToChar (char *a_str, UINT16* w_str, UINT16 a_size)
-{
- UINT16 result = 0;
- int size = a_size;
-
- if (w_str == NULL || a_str == NULL)
- return;
-
- while (size > 0 && *w_str != 0)
- {
- if ((*w_str & ~0xff) != 0)
- {
- result = 0;
- break;
- }
-
- a_str[result++] = (char) *w_str;
- ++(w_str);
- --size;
- }
-
- if(size)
- a_str[result] = 0;
-
- return;
-
-
-}
-
diff --git a/stack/obx/hdrs/utfc.c b/stack/obx/hdrs/utfc.c
deleted file mode 100644
index d59733d..0000000
--- a/stack/obx/hdrs/utfc.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*****************************************************************************
-**
-** Name: utfc.c
-**
-** Description: UTF conversion utilities.
-**
-** Copyright (c) 2003-2004, WIDCOMM Inc., All Rights Reserved.
-**
-*****************************************************************************/
-
-#include <string.h>
-#include "bt_target.h"
-#include "utfc.h"
-
-/* Based on code from Unicode, Inc:
- *
- * Copyright 2001-2003 Unicode, Inc.
- *
- * Limitations on Rights to Redistribute This Code
- *
- * Unicode, Inc. hereby grants the right to freely use the information
- * supplied in this file in the creation of products supporting the
- * Unicode Standard, and to make copies of this file in any form
- * for internal or external distribution as long as this notice
- * remains attached.
- */
-
-/*******************************************************************************
-** Constants
-*******************************************************************************/
-
-#define UTFC_8_MASK 0xBF
-#define UTFC_8_MARK 0x80
-
-#define UTFC_SUR_HIGH_START 0xD800
-#define UTFC_SUR_HIGH_END 0xDBFF
-#define UTFC_SUR_LOW_START 0xDC00
-#define UTFC_SUR_LOW_END 0xDFFF
-
-/* Lookup table for length of UTF-8 byte sequence based on upper four bits
-** of first byte. Illegal values give length zero.
-*/
-static const UINT8 utfc_8_seq_len[] = {1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 2, 2, 3, 4};
-
-/* Magic values subtracted from a buffer value during UTF-8 conversion.
-** This table contains as many values as there might be trailing bytes
-** in a UTF-8 sequence.
-**/
-static const UINT32 utfc_8_offset[] = {0x00000000, 0x00003080,
- 0x000E2080, 0x03C82080};
-
-static const UINT8 utfc_8_first_byte[] = {0x00, 0x00, 0xC0, 0xE0, 0xF0};
-
-/*******************************************************************************
-**
-** Function utfc_16_to_8
-**
-** Description Convert a UTF-16 array to a null-terminated UTF-8 string.
-** Illegal characters are skipped.
-**
-** Returns Length of UTF-8 string in bytes.
-**
-*******************************************************************************/
-UINT16 utfc_16_to_8(UINT8 *p_utf8, UINT16 utf8_len, UINT16 *p_utf16, UINT16 utf16_len)
-{
- UINT32 ch, ch2;
- UINT16 len = 0;
- UINT8 seq_len;
-
- /* sanity check destination buffer len */
- if (utf8_len == 0)
- {
- /* set null */
- *p_utf8 = 0;
- return len;
- }
-
- /* save space for null */
- utf8_len--;
-
- while (utf16_len-- > 0)
- {
- ch = (UINT32) *p_utf16++;
-
- /* if we have a surrogate pair, convert to UTF-32 first */
- if (ch >= UTFC_SUR_HIGH_START && ch <= UTFC_SUR_HIGH_END)
- {
- /* if not enough characters we're done */
- if (utf16_len == 0)
- {
- break;
- }
-
- /* get next character */
- ch2 = *p_utf16++;
- utf16_len--;
-
- /* if it's a low surrogate, convert to UTF-32 */
- if (ch2 >= UTFC_SUR_LOW_START && ch2 <= UTFC_SUR_LOW_END)
- {
- ch = ((ch - UTFC_SUR_HIGH_START) << 10) +
- (ch2 - UTFC_SUR_LOW_START) + 0x00010000;
- }
- else
- {
- /* illegal UTF-16 sequence, skip it */
- continue;
- }
- }
-
- /* Figure out how many bytes the result will require */
- if (ch < 0x00000080)
- seq_len = 1;
- else if (ch < 0x00000800)
- seq_len = 2;
- else if (ch < 0x00010000)
- seq_len = 3;
- else
- seq_len = 4;
-
- /* if sequence doesn't fit we're done */
- if (utf8_len < len + seq_len)
- {
- break;
- }
-
- /* build UTF-8 sequence */
- switch (seq_len)
- { /* note: everything falls through. */
- case 4: p_utf8[3] = (UINT8) ((ch | UTFC_8_MARK) & UTFC_8_MASK); ch >>= 6;
- case 3: p_utf8[2] = (UINT8) ((ch | UTFC_8_MARK) & UTFC_8_MASK); ch >>= 6;
- case 2: p_utf8[1] = (UINT8) ((ch | UTFC_8_MARK) & UTFC_8_MASK); ch >>= 6;
- case 1: p_utf8[0] = (UINT8) (ch | utfc_8_first_byte[seq_len]);
- }
-
- /* converted value is a null we're done */
- if (*p_utf8 == 0)
- {
- break;
- }
-
- p_utf8 += seq_len;
- len += seq_len;
- }
-
- /* set null */
- *p_utf8 = 0;
-
- return len;
-}
-
-/*******************************************************************************
-**
-** Function utfc_8_to_16
-**
-** Description Convert a null-terminated UTF-8 string to a UTF-16 array.
-** Illegal characters are skipped. The UTF-16 array is
-** appended with a zero (null) character.
-**
-** Returns Length of UTF-16 array including null character.
-**
-*******************************************************************************/
-UINT16 utfc_8_to_16(UINT16 *p_utf16, UINT16 utf16_len, UINT8 *p_utf8)
-{
- UINT32 ch;
- UINT8 *p_end;
- UINT16 *p;
- UINT8 seq_len;
-
- /* sanity check destination buffer len */
- if (utf16_len == 0)
- {
- *p_utf16 = 0;
- return 0;
- }
-
- /* save space for null */
- utf16_len--;
-
- p = p_utf16;
- p_end = (UINT8 *) p_utf8 + strlen((char *) p_utf8);
-
- while (*p_utf8)
- {
- /* get sequence length; skip if illegal */
- if ((seq_len = utfc_8_seq_len[*p_utf8 >> 4]) == 0)
- {
- p_utf8++;
- continue;
- }
-
- /* make sure sequence doesn't extend past end of UTF-8 buffer */
- if (p_utf8 + seq_len > p_end)
- {
- break;
- }
-
- /* construct UTF-32 character from sequence */
- ch = 0;
- switch (seq_len)
- { /* note: everything falls through. */
- case 4: ch += *p_utf8++; ch <<= 6;
- case 3: ch += *p_utf8++; ch <<= 6;
- case 2: ch += *p_utf8++; ch <<= 6;
- case 1: ch += *p_utf8++;
- }
- ch -= utfc_8_offset[seq_len - 1];
-
- if (ch <= 0x0000FFFF)
- {
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UTFC_SUR_HIGH_START && ch <= UTFC_SUR_LOW_END)
- {
- continue;
- }
-
- /* make sure fits */
- if (p - p_utf16 == utf16_len)
- {
- break;
- }
-
- *p++ = (UINT16) ch;
- }
- else if (ch < 0x0010FFFF)
- {
- /* make sure fits */
- if ((p - p_utf16) == (utf16_len - 1))
- {
- break;
- }
-
- ch -= 0x00010000;
- *p++ = (UINT16) ((ch >> 10) + UTFC_SUR_HIGH_START);
- *p++ = (UINT16) ((ch & 0x000003FF) + UTFC_SUR_LOW_START);
- }
- }
-
- /* set null */
- *p++ = 0;
-
- return (UINT16) (p - p_utf16);
-}
-