|
ADC Home > Reference Library > Reference > Hardware & Drivers > Bluetooth > Bluetooth Framework Reference
|
OBEX.h |
| Include Path: | <IOBluetooth/OBEX.h> |
| Path: | /System/Library/Frameworks/IOBluetooth.framework/Versions/A/Headers/OBEX.h |
| See Also: |
This header contains generic OBEX constants, structs, and C API used for all OBEX communication over any transport. For specific transport API, see that transport's C API. For example, if you wanted to know more about the Bluetooth OBEX implementation, see the documentation for OBEXBluetooth.h.
This file also contains API that will assist in the construction and deconstruction of OBEX headers to and from raw bytes, as well as the creation of vCards and vEvents.
For more information about accessing Bluetooth devices, see Working With Bluetooth Devices.
Add an bytes representing a connection ID to a dictionary of OBEX headers.
Add an authorization challenge header to a dictionary of OBEXheaders.
Add an authorization Response header to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add an arbitrary byte sequence header to a dictionary of OBEXheaders.
Add an bytes representing a connection ID to a dictionary of OBEX headers.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add an object class header to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Add a user-defined custom header to a dictionary of OBEXheaders.
Add a CFStringRef to a dictionary of OBEXheaders.
Creates a formatted vCard, ready to be sent over OBEX or whatever.
Creates a formatted vEvent, ready to be sent over OBEX or whatever. You probably will embed the output in a vCalendar event.
Take a data blob and looks for OBEX headers.
Converts a dictionary of headers to a data pointer, from which you can extract as bytes and pass to the OBEX command/response functions.
Send an abort command to a remote OBEX server.
Send a response to a abort command to the remote client.
Establishes an OBEX connection to the target device for the session. If a transport connection is not open yet, it will be opened if possible.
Send a response to a connect command to the remote client.
Destroy an OBEX session. If connections are open, they will (eventually) be terminated for you.
Send a disconnect command to a remote OBEX server.
Send a response to a disconnect command to the remote client.
Send a get command to a remote OBEX server.
Gets space available for your data for a particular command you are trying to send.
Gets space available for your data for a particular command response you are trying to send.
Gets current max packet length.
Send a response to a get command to the remote client.
Allows you to test the session for an open OBEX connection for a particular session.
Send a put command to a remote OBEX server.
Send a response to a put command to the remote client.
Send a set path command to a remote OBEX server.
Send a response to a set path command to the remote client.
OBEXAddApplicationParameterHeader |
Add an bytes representing a connection ID to a dictionary of OBEX headers.
OBEXError OBEXAddApplicationParameterHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataApplication parameter data - should be tag/length/value triplets.
inHeaderDataLengthLength of application parameter data.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Application Request/Response Parameter headers - OBEX Spec, 2.2.11: Byte Sequence
OBEXAddAuthorizationChallengeHeader |
Add an authorization challenge header to a dictionary of OBEXheaders.
OBEXError OBEXAddAuthorizationChallengeHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDatabytes you want to put in the authorization challenge header.
inHeaderDataLengthlength of the bytes you want to put in authorization challenge header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Authorization Challenge header - OBEX Spec, 2.2.13: Authorization Challenge.
OBEXAddAuthorizationResponseHeader |
Add an authorization Response header to a dictionary of OBEXheaders.
OBEXError OBEXAddAuthorizationResponseHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDatabytes you want to put in the authorization Response header.
inHeaderDataLengthlength of the bytes you want to put in authorization Response header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Authorization Response header - OBEX Spec, 2.2.14: Authorization Response.
OBEXAddBodyHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddBodyHeader( const void *inHeaderData, uint32_t inHeaderDataLength, Boolean isEndOfBody, CFMutableDictionaryRef dictRef );
inHeaderDataBody header data.
inHeaderDataLengthLength of Body header data.
isEndOfBodySet this flag if you want an end of body header instead of a body header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Body,EndOfBody headers - OBEX Spec, 2.2.9: Byte Sequence
OBEXAddByteSequenceHeader |
Add an arbitrary byte sequence header to a dictionary of OBEXheaders.
OBEXError OBEXAddByteSequenceHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDatabytes you want to put in the byte sequence header.
inHeaderDataLengthlength of the bytes you want to put in the byte sequence header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Byte Sequence header - OBEX Spec, 2.2.5: Byte sequence.
OBEXAddConnectionIDHeader |
Add an bytes representing a connection ID to a dictionary of OBEX headers.
OBEXError OBEXAddConnectionIDHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataConnection ID data. Should be 4 bytes in length only.
inHeaderDataLengthLength of Connection ID data. This should ONLY be set to equal 4.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
ConnectionID headers - OBEX Spec, 2.2.10: Byte Sequence
*** IMPORTANT NOTE: In bluetooth 1.0, using this function will allow you to pass in any value. You should not pass more than 4 bytes ever. In later releases, if the length passed is not 4, a kOBEXBadArgumentError error will be returned. ***
OBEXAddCountHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddCountHeader( uint32_t count, CFMutableDictionaryRef dictRef );
countCount value you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Count header - OBEX Spec, 2.2.1: 4 byte unsigned integer
OBEXAddDescriptionHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddDescriptionHeader( CFStringRef description, CFMutableDictionaryRef dictRef );
descriptionDescription you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Description header - OBEX Spec, 2.2.6: (2-byte) Null terminated unicode string.
OBEXAddHTTPHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddHTTPHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataHTTP header data.
inHeaderDataLengthLength of HTTP header data.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
HTTP header - OBEX Spec, 2.2.8: Byte Sequence
OBEXAddLengthHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddLengthHeader( uint32_t length, CFMutableDictionaryRef dictRef );
lengthValue of Length header you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Length header - OBEX Spec, 2.2.4: 4 byte unsigned integer
OBEXAddNameHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddNameHeader( CFStringRef name, CFMutableDictionaryRef dictRef );
namename you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Name header - OBEX Spec, 2.2.2: (2-byte) Null terminated unicode string.
OBEXAddObjectClassHeader |
Add an object class header to a dictionary of OBEXheaders.
OBEXError OBEXAddObjectClassHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDatabytes you want to put in the object class header.
inHeaderDataLengthlength of the bytes you want to put in the object class header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Object Class header - OBEX Spec, 2.2.15: Byte sequence.
OBEXAddTargetHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddTargetHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataTarget header data.
inHeaderDataLengthLength of Target header data.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Target header - OBEX Spec, 2.2.7: Byte Sequence
OBEXAddTime4ByteHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddTime4ByteHeader( uint32_t time4Byte, CFMutableDictionaryRef dictRef );
time4Byte4-byte time value you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Time4Byte headers - OBEX Spec, 2.2.5: 4 Bytes
OBEXAddTimeISOHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddTimeISOHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataTarget header data.
inHeaderDataLengthLength of Target header data.
Error code, kOBEXSuccess (0) if success.
TimeISO header - OBEX Spec, 2.2.5: Byte Sequence
OBEXAddTypeHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddTypeHeader( CFStringRef type, CFMutableDictionaryRef dictRef );
descriptionDescription containing the name you want to add to the OBEX header dictionary.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Type header - OBEX Spec, 2.2.3: 1-byte Null terminated ascii string.
OBEXAddUserDefinedHeader |
Add a user-defined custom header to a dictionary of OBEXheaders.
OBEXError OBEXAddUserDefinedHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDatabytes you want to put in the user-defined header.
inHeaderDataLengthlength of the bytes you want to put in user-defined header.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
User Defined header - OBEX Spec, 2.2.20: User Defined Headers.
OBEXAddWhoHeader |
Add a CFStringRef to a dictionary of OBEXheaders.
OBEXError OBEXAddWhoHeader( const void *inHeaderData, uint32_t inHeaderDataLength, CFMutableDictionaryRef dictRef );
inHeaderDataWho header data.
inHeaderDataLengthLength of Who header data.
dictRefdictionary you have allocated to hold the headers. Make sure it's mutable.
Error code, kOBEXSuccess (0) if success.
Who headers - OBEX Spec, 2.2.10: Byte Sequence
OBEXCreateVCard |
Creates a formatted vCard, ready to be sent over OBEX or whatever.
CFDataRef OBEXCreateVCard( const void *inFirstName, uint32_t inFirstNameLength, const void *inLastName, uint32_t inLastNameLength, const void *inFriendlyName, uint32_t inFriendlyNameLength, const void *inNameCharset, uint32_t inNameCharsetLength, const void *inHomePhone, uint32_t inHomePhoneLength, const void *inWorkPhone, uint32_t inWorkPhoneLength, const void *inCellPhone, uint32_t inCellPhoneLength, const void *inFaxPhone, uint32_t inFaxPhoneLength, const void *inEMailAddress, uint32_t inEMailAddressLength, const void *inEMailAddressCharset, uint32_t inEMailAddressCharsetLength, const void *inOrganization, uint32_t inOrganizationLength, const void *inOrganizationCharset, uint32_t inOrganizationCharsetLength, const void *inTitle, uint32_t inTitleLength, const void *inTitleCharset, uint32_t inTitleCharsetLength );
inNameCharsetA pointer to the charset data used for the name. Pass in a #defined charset for ease of use.
inNameCharsetLengthLength of name charset assed in above.
inFirstNamePointer to data with Person's first name.
inFirstNameLengthLength of Person's first name passed in above.
inLastNamePointer to data with Person's last name.
inLastNameLengthLength of Person's last name passed in above.
inFriendlyNamePointer to data with Person's Friendly name.
inFriendlyNameLengthLength of Person's Friendly name passed in above.
inHomePhonePointer to data with Person's Home phone number.
inHomePhoneLengthLength of Person's Home phone number passed in above.
inWorkPhoneWork phone number.
inWorkPhoneLengthLength of Person's Work phone number passed in above.
inCellPhoneCell phone number.
inCellPhoneLengthLength of Person's Cell phone number passed in above.
inFaxPhoneFax phone number.
inFaxPhoneLengthLength of Person's Fax phone number passed in above.
inEMailAddressEMailAddress of person.
inEMailAddressLengthLength of Person's EMailAddress passed in above.
inEMailAddressCharsetCharset of EMailAddress of person.
inEMailAddressCharsetLengthLength of Person's EMailAddress charset passed in above.
inOrganizationPointer to Organization/business data.
inOrganizationLengthLength of Organization/business data.
inOrganizationCharsetPointer to the charset the Organization/business is in.
inOrganizationCharsetLengthLength of data for the Organization/business charset.
inTitlePointer to data with Title of person in biz/org.
inTitleLengthLength of Title of person in biz/org.
inOrganizationCharsetPointer to the charset the Title is in.
inOrganizationCharsetLengthLength of data for the Title charset.
An CFDataRef containing the compiled data. nil if we failed.
All parameters are optional. The CFDataRef returned to you is NOT retained. Retain it if you want to keep it.
OBEXCreateVEvent |
Creates a formatted vEvent, ready to be sent over OBEX or whatever. You probably will embed the output in a vCalendar event.
CFDataRef OBEXCreateVEvent( const char *inCharset, uint32_t inCharsetLength, const char *inEncoding, uint32_t inEncodingLength, const char *inEventStartDate, uint32_t inEventStartDateLength, const char *inEventEndDate, uint32_t inEventEndDateLength, const char *inAlarmDate, uint32_t inAlarmDateLength, const char *inCategory, uint32_t inCategoryLength, const char *inSummary, uint32_t inSummaryLength, const char *inLocation, uint32_t inLocationLength, const char *inXIRMCLUID, uint32_t inXIRMCLUIDLength );
inCharsetThe Charset the passed data is in. Pass in a #defined charset for ease of use.
inCharsetLengthThe length of the Charset passed data.
inEncodingThe encoding of the summary and location fields.
inCharsetLengthThe length of the Charset passed data.
inEventStartDateStart of event date, in the (ISO8601) format: YYYYMMDDTHHMMSS. e.g. 19960415T083000 = 8:30 am on April 15, 1996. All time values should be in LOCAL time.
inCharsetLengthThe length of the Charset passed data.
inEventEndDateEnd of event date.
inCharsetLengthThe length of the Charset passed data.
inAlarmDateDate of Alarm for event, in the format: YYYYMMDDTHHMMSS.
inCharsetLengthThe length of the Charset passed data.
inCategoryCategory of event, such as "MEETING" or "PHONE CALL".
inCharsetLengthThe length of the Charset passed data.
inSummarySummary of event. Max length is 36 bytes. Longer will result in a bad argument error.
inCharsetLengthThe length of the Charset passed data.
inLocationSummary of event. Max length is 20 bytes. Longer will result in a bad argument error.
inCharsetLengthThe length of the Charset passed data.
inXIRMCLUIDThe IRMC Local Unique Identifier Label, max length 12 bytes. Longer will result in a bad argument error.
inCharsetLengthThe length of the Charset passed data.
A valid CFDataRef - nil if we failed.
All parameters are optional. The CFDataRef returned to you is NOT retained. Retain it if you want to keep it. Be aware that certain devices such as Ericsson phones MUST have certain fields, such as a start and end date.
OBEXGetHeaders |
Take a data blob and looks for OBEX headers.
CFDictionaryRef OBEXGetHeaders( const void *inData, size_t inDataSize );
inDataThe data chunk with the headers you are interested in.
inDataSizeThe size of the buffer you are passing in.
A CFDictionary with the headers found in the data blob inside it.
You should use this when your callback for PUTs, GETs, etc. give you a data chunk and a size. Pass these params to this function and you will receive a dictionary back full of the parse headers. You can use the CFDictionary calls to get objects out of it, based on the header keys defined above. You are responsible for releasing the CFDictionary returned to you. Example usage:
CFDictionaryRef dictionary = OBEXGetHeaders( data, dataLength );
if( dictionary )
{
if( CFDictionaryGetCountOfKey( dictionary, kOBEXHeaderIDKeyName ) > 0 )
{
CFStringRef theStringRef;
theStringRef = (CFStringRef) CFDictionaryGetValue( dictionary, kOBEXHeaderIDKeyName );
if( theStringRef )
{
// Display it, use it as a filename, whatever.
}
}
if( CFDictionaryGetCountOfKey( dictionary, kOBEXHeaderIDKeyConnectionID ) > 0 )
{
CFDataRef theDataRef;
theDataRef = (CFDataRef) CFDictionaryGetValue( dictionary, kOBEXHeaderIDKeyConnectionID );
if( theDataRef )
{
// now we have data representing the connection ID.
}
}
CFRelease( dictionary );
}
OBEXHeadersToBytes |
Converts a dictionary of headers to a data pointer, from which you can extract as bytes and pass to the OBEX command/response functions.
CFMutableDataRef OBEXHeadersToBytes( CFDictionaryRef dictionaryOfHeaders );
dictionaryOfHeadersdictionary that you have added headers to with the above OBEXAddXXXHeader functions.
Mutable data ref containing the bytes of all headers.
Returns a CFMutableDataRef containing all the header data found in the dictionary, formatted according to the OBEX/IrMC spec. YOU MUST RELEASE IT when you are finished with it (ie. when the OBEX request is complete). All OBEX-specification defined headers are supported and should be returned to the dictionary. Use the keys defined above to get headers from dictionary. Example usage:
Example usage: CFMutableDictionaryRef dictionary; CFMutableDataRef mGetHeadersDataRef; uint8_t* headerDataPtr; uint32_t headerDataLength; dictionary = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks ); // Package up desired headers. OBEXAddTypeHeader( CFSTR( "text/x-vCard" ), dictionary ); mGetHeadersDataRef = OBEXHeadersToBytes( dictionary ); headerDataPtr = CFDataGetBytePtr( mGetHeadersDataRef ); headerDataLength = CFDataGetLength( mGetHeadersDataRef ); // From here I can pass it to any OBEX command, such as OBEXPut...
OBEXSessionAbort |
Send an abort command to a remote OBEX server.
OBEXError OBEXSessionAbort( OBEXSessionRef inSessionRef, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefcon );
inSessionRefA valid session reference.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionAbortResponse |
Send a response to a abort command to the remote client.
OBEXError OBEXSessionAbortResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionConnect |
Establishes an OBEX connection to the target device for the session. If a transport connection is not open yet, it will be opened if possible.
OBEXError OBEXSessionConnect( OBEXSessionRef inSessionRef, OBEXFlags inFlags, OBEXMaxPacketLength inMaxPacketLength, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inFlagsFlags, as defined in the OBEX spec for this command.
inMaxPacketLengthMaximum packet length you wish to allow. May be negiotiated with host to be less or more than you specify.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback parameter will result in an error. If you have already established an OBEX connection and you call this again you will get an 'kOBEXSessionAlreadyConnectedError' as a result.
OBEXSessionConnectResponse |
Send a response to a connect command to the remote client.
OBEXError OBEXSessionConnectResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, OBEXFlags inFlags, OBEXMaxPacketLength inMaxPacketLength, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inFlagsFlags, as defined in the OBEX spec for this command.
inConstantsConstants, as defined in the OBEX spec for this command.
inMaxPacketLengthMax packet length you want to support. Must be smaller or equal to the max packet length specified by the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionDelete |
Destroy an OBEX session. If connections are open, they will (eventually) be terminated for you.
OBEXError OBEXSessionDelete( OBEXSessionRef inSessionRef );
inSessionRefA valid service reference.
An error code value. 0 if successful.
OBEXSessionDisconnect |
Send a disconnect command to a remote OBEX server.
OBEXError OBEXSessionDisconnect( OBEXSessionRef inSessionRef, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionDisconnectResponse |
Send a response to a disconnect command to the remote client.
OBEXError OBEXSessionDisconnectResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionGet |
Send a get command to a remote OBEX server.
OBEXError OBEXSessionGet( OBEXSessionRef inSessionRef, Boolean inIsFinalChunk, void *inHeadersData, size_t inHeadersDataLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inIsFinalChunkTRUE or FALSE - is this the last chunk of header data for this GET.
inHeadersDataHeaders containing data to GET.
inHeadersDataLengthSize of header data.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionGetAvailableCommandPayloadLength |
Gets space available for your data for a particular command you are trying to send.
OBEXError OBEXSessionGetAvailableCommandPayloadLength( OBEXSessionRef inSessionRef, OBEXOpCode inOpCode, OBEXMaxPacketLength *outLength );
inSessionRefA valid session reference.
inOpCodeAn opcode of what command you are trying to send.
outLengthSpace available for your header data in the payload area for a particular command.
An error code value. 0 if successful.
The OBEXSession takes care of packaging OBEX opcodes and other information into the proper packet format, allowing you to focus on sending the proper OBEX headers in your commands and command responses. This formatting and datas requires a small bit of information that varies depending on what command or response you are sending. Thus, you should call this function to find out how much space will be left for your headers before you send the command, allowing you to properly chop up your headers before sending them. This will guarantee that (a) you use up all the available space in a packet and (b) that you do not get an error trying to send too much information at once.
OBEXSessionGetAvailableCommandResponsePayloadLength |
Gets space available for your data for a particular command response you are trying to send.
OBEXError OBEXSessionGetAvailableCommandResponsePayloadLength( OBEXSessionRef inSessionRef, OBEXOpCode inOpCode, OBEXMaxPacketLength *outLength );
inSessionRefA valid session reference.
inOpCodeA command opcode that you are responding to. For example, if you receiving a Put command, and want to send back a "bad request" response, you should still pass in the Put command opcode for that response.
outLengthSpace available for your header data in the payload area for a particular command.
An error code value. 0 if successful.
The OBEXSession takes care of packaging OBEX opcodes and other information into the proper packet format, allowing you to focus on sending the proper OBEX headers in your commands and command responses. This formatting and datas requires a small bit of information that varies depending on what command or response you are sending. Thus, you should call this function to find out how much space will be left for your headers before you send the command, allowing you to properly chop up your headers before sending them. This will guarantee that (a) you use up all the available space in a packet and (b) that you do not get an error trying to send too much information at once.
OBEXSessionGetMaxPacketLength |
Gets current max packet length.
OBEXError OBEXSessionGetMaxPacketLength( OBEXSessionRef inSessionRef, OBEXMaxPacketLength *outLength );
inSessionRefA valid session reference.
outLengthMax packet length.
An error code value. 0 if successful.
This value *could* change before and after a connect command has been sent or a connect command response has been received, since the recipient could negotiate a lower max packet size.
OBEXSessionGetResponse |
Send a response to a get command to the remote client.
OBEXError OBEXSessionGetResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionHasOpenOBEXConnection |
Allows you to test the session for an open OBEX connection for a particular session.
OBEXError OBEXSessionHasOpenOBEXConnection( OBEXSessionRef inSessionRef, Boolean *outIsConnected );
inSessionRefA valid session reference.
outIsConnectedA valid ptr to an OBEXSessionRef; will contain the newly created session if return value is kOBEXSuccess.
An error code value. 0 if successful.
This method will return true only if (a) you are transport-connected to another OBEX target and (b) an OBEX Connect command has been issued and received successfully.
OBEXSessionPut |
Send a put command to a remote OBEX server.
OBEXError OBEXSessionPut( OBEXSessionRef inSessionRef, Boolean inIsFinalChunk, void *inHeadersData, size_t inHeadersDataLength, void *inBodyData, size_t inBodyDataLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inIsFinalChunkTRUE or FALSE - is this the last chunk of header data for this PUT.
inHeadersDataHeaders containing data to PUT. Don't include your body header data here.
inHeadersDataLengthSize of header data. Don't include your body header data here.
inBodyDataData for the BODY header to PUT. DO NOT package your data in an actual BODY header, this will be done for you, based on the finalChunk flag you pass in above (since based on this flag the header ID will be either a BODY or ENDOFBODY header).
inBodyDataLengthSize of Data for the BODY header to PUT.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionPutResponse |
Send a response to a put command to the remote client.
OBEXError OBEXSessionPutResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionSetPath |
Send a set path command to a remote OBEX server.
OBEXError OBEXSessionSetPath( OBEXSessionRef inSessionRef, OBEXFlags inFlags, OBEXConstants inConstants, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefcon );
inSessionRefA valid session reference.
inFlagsFlags, as defined in the OBEX spec for this command.
inConstantsConstants, as defined in the OBEX spec for this command.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionSetPathResponse |
Send a response to a set path command to the remote client.
OBEXError OBEXSessionSetPathResponse( OBEXSessionRef inSessionRef, OBEXOpCode inResponseOpCode, void *inOptionalHeaders, size_t inOptionalHeadersLength, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inResponseOpCodeWhat response code you want to send to the remote client.
inOptionalHeadersPtr to optional headers you can supply to the command. DO NOT dispose of this pointer until you callback is called with a success.
inOptionalHeadersLengthSize of data at the specified ptr.
inCallbackA valid callback. Will be called for progress, errors and completion.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
As all commands for OBEX sessions, this command is asynchronous only. A NULL callback paramter will result in an error.
OBEXSessionSetServerCallback |
OBEXError OBEXSessionSetServerCallback( OBEXSessionRef inSessionRef, OBEXSessionEventCallback inCallback, void *inUserRefCon );
inSessionRefA valid session reference.
inCallbackA valid callback. Will be called for progress, errors and completion by server sessions only.
inUserRefConOptional parameter; can contain anything you wish. Will be returned in your callback just as you passed it.
An error code value. 0 if successful.
Sets callback to be used when an event occurs on an OBEXSession. This is important for OBEX servers, as you will need a way to be called back when the first command is sent to you. So, be sure to set yourself up to listen for events when you are ready to receive them.
OBEXAbortCommandData |
OBEXAbortCommandData
typedef struct OBEXAbortCommandData OBEXAbortCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeAbortCommandReceived (see OBEXSessionEventTypes).
OBEXAbortCommandResponseData |
OBEXAbortCommandResponseData
typedef struct OBEXAbortCommandResponseData OBEXAbortCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeAbortCommandResponseReceived (see OBEXSessionEventTypes).
OBEXConnectCommandData |
OBEXConnectCommandData
typedef struct OBEXConnectCommandData OBEXConnectCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeConnectCommandReceived (see OBEXSessionEventTypes).
OBEXConnectCommandResponseData |
OBEXConnectCommandResponseData
typedef struct OBEXConnectCommandResponseData OBEXConnectCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeConnectCommandResponseReceived (see OBEXSessionEventTypes).
OBEXDisconnectCommandData |
OBEXDisconnectCommandData
typedef struct OBEXDisconnectCommandData OBEXDisconnectCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeDisconnectCommandReceived (see OBEXSessionEventTypes).
OBEXDisconnectCommandResponseData |
OBEXDisconnectCommandResponseData
typedef struct OBEXDisconnectCommandResponseData OBEXDisconnectCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeDisconnectCommandResponseReceived (see OBEXSessionEventTypes).
OBEXError |
Codes for OBEX errors. If the return value was not in the following range, then it is most likely resulting from kernel code/IOKit, and you should consult IOReturn.h for those codes.
See Also:
OBEXErrorCodes
typedef int32_t OBEXError;
OBEXErrorData |
OBEXErrorData
typedef struct OBEXErrorData OBEXErrorData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeError (see OBEXSessionEventTypes).
OBEXGetCommandData |
OBEXGetCommandData
typedef struct OBEXGetCommandData OBEXGetCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeGetCommandReceived (see OBEXSessionEventTypes).
OBEXGetCommandResponseData |
OBEXGetCommandResponseData
typedef struct OBEXGetCommandResponseData OBEXGetCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeGetCommandResponseReceived (see OBEXSessionEventTypes).
OBEXPutCommandData |
OBEXPutCommandData
typedef struct OBEXPutCommandData OBEXPutCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypePutCommandReceived (see OBEXSessionEventTypes).
OBEXPutCommandResponseData |
OBEXPutCommandResponseData
typedef struct OBEXPutCommandResponseData OBEXPutCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypePutCommandResponseReceived (see OBEXSessionEventTypes).
OBEXSessionEvent |
OBEXSessionEvent
typedef struct OBEXSessionEvent OBEXSessionEvent;
When a new session event occurs, your selector (or C callback) will be given an OBEXSessionEvent pointer, and in it will be information you might find interesting so that you can then reply back appropriately. For example, of you receive a kOBEXSessionEventTypeConnectCommandResponseReceived event, you can then parse out the information related to that event, and if all looks well to you, you could them send a "Get" command to get a file off of the OBEX server you just connected to.
OBEXSetPathCommandData |
OBEXSetPathCommandData
typedef struct OBEXSetPathCommandData OBEXSetPathCommandData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeSetPathCommandReceived (see OBEXSessionEventTypes).
OBEXSetPathCommandResponseData |
OBEXSetPathCommandResponseData
typedef struct OBEXSetPathCommandResponseData OBEXSetPathCommandResponseData;
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeSetPathCommandResponseReceived (see OBEXSessionEventTypes).
OBEXAbortCommandData |
OBEXAbortCommandData
struct OBEXAbortCommandData { void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeAbortCommandReceived (see OBEXSessionEventTypes).
OBEXAbortCommandResponseData |
OBEXAbortCommandResponseData
struct OBEXAbortCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeAbortCommandResponseReceived (see OBEXSessionEventTypes).
OBEXConnectCommandData |
OBEXConnectCommandData
struct OBEXConnectCommandData { void *headerDataPtr; size_t headerDataLength; OBEXMaxPacketLength maxPacketSize; OBEXVersion version; OBEXFlags flags; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeConnectCommandReceived (see OBEXSessionEventTypes).
OBEXConnectCommandResponseData |
OBEXConnectCommandResponseData
struct OBEXConnectCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; OBEXMaxPacketLength maxPacketSize; OBEXVersion version; OBEXFlags flags; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeConnectCommandResponseReceived (see OBEXSessionEventTypes).
OBEXDisconnectCommandData |
OBEXDisconnectCommandData
struct OBEXDisconnectCommandData { void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeDisconnectCommandReceived (see OBEXSessionEventTypes).
OBEXDisconnectCommandResponseData |
OBEXDisconnectCommandResponseData
struct OBEXDisconnectCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeDisconnectCommandResponseReceived (see OBEXSessionEventTypes).
OBEXErrorData |
OBEXErrorData
struct OBEXErrorData { OBEXError error; void *dataPtr; // If data was associated with the error, it will be included here if possible. size_t dataLength; // Check the size to see if there is data to be examined. };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeError (see OBEXSessionEventTypes).
OBEXGetCommandData |
OBEXGetCommandData
struct OBEXGetCommandData { void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeGetCommandReceived (see OBEXSessionEventTypes).
OBEXGetCommandResponseData |
OBEXGetCommandResponseData
struct OBEXGetCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeGetCommandResponseReceived (see OBEXSessionEventTypes).
OBEXPutCommandData |
OBEXPutCommandData
struct OBEXPutCommandData { void *headerDataPtr; size_t headerDataLength; size_t bodyDataLeftToSend; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypePutCommandReceived (see OBEXSessionEventTypes).
OBEXPutCommandResponseData |
OBEXPutCommandResponseData
struct OBEXPutCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypePutCommandResponseReceived (see OBEXSessionEventTypes).
OBEXSessionEvent |
OBEXSessionEvent
struct OBEXSessionEvent { OBEXSessionEventType type; OBEXSessionRef session; void *refCon; Boolean isEndOfEventData; void *reserved1; void *reserved2; union { // Client session events. OBEXConnectCommandResponseData connectCommandResponseData; OBEXDisconnectCommandResponseData disconnectCommandResponseData; OBEXPutCommandResponseData putCommandResponseData; OBEXGetCommandResponseData getCommandResponseData; OBEXSetPathCommandResponseData setPathCommandResponseData; OBEXAbortCommandResponseData abortCommandResponseData; // Server session events. OBEXConnectCommandData connectCommandData; OBEXDisconnectCommandData disconnectCommandData; OBEXPutCommandData putCommandData; OBEXGetCommandData getCommandData; OBEXSetPathCommandData setPathCommandData; OBEXAbortCommandData abortCommandData; // Client & Server Session events. OBEXErrorData errorData; } u; };
When a new session event occurs, your selector (or C callback) will be given an OBEXSessionEvent pointer, and in it will be information you might find interesting so that you can then reply back appropriately. For example, of you receive a kOBEXSessionEventTypeConnectCommandResponseReceived event, you can then parse out the information related to that event, and if all looks well to you, you could them send a "Get" command to get a file off of the OBEX server you just connected to.
OBEXSetPathCommandData |
OBEXSetPathCommandData
struct OBEXSetPathCommandData { void *headerDataPtr; size_t headerDataLength; OBEXFlags flags; OBEXConstants constants; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeSetPathCommandReceived (see OBEXSessionEventTypes).
OBEXSetPathCommandResponseData |
OBEXSetPathCommandResponseData
struct OBEXSetPathCommandResponseData { OBEXOpCode serverResponseOpCode; void *headerDataPtr; size_t headerDataLength; OBEXFlags flags; OBEXConstants constants; };
Part of the OBEXSessionEvent structure. Is readable when the event is of type kOBEXSessionEventTypeSetPathCommandResponseReceived (see OBEXSessionEventTypes).
OBEXConnectFlags |
Flags for Connect command.
See Also:
OBEXConnectFlagValues
enum OBEXConnectFlagValues { kOBEXConnectFlagNone = ( 0 << 0L), kOBEXConnectFlagSupportMultipleItLMPConnections = ( 1 << 0L), kOBEXConnectFlag1Reserved = ( 1 << 1L), kOBEXConnectFlag2Reserved = ( 1 << 2L), kOBEXConnectFlag3Reserved = ( 1 << 3L), kOBEXConnectFlag4Reserved = ( 1 << 4L), kOBEXConnectFlag5Reserved = ( 1 << 5L), kOBEXConnectFlag6Reserved = ( 1 << 6L), kOBEXConnectFlag7Reserved = ( 1 << 7L), };
OBEXConnectFlagValues |
Flags for Connect command.
See Also:
OBEXConnectFlags
enum OBEXConnectFlagValues { kOBEXConnectFlagNone = ( 0 << 0L), kOBEXConnectFlagSupportMultipleItLMPConnections = ( 1 << 0L), kOBEXConnectFlag1Reserved = ( 1 << 1L), kOBEXConnectFlag2Reserved = ( 1 << 2L), kOBEXConnectFlag3Reserved = ( 1 << 3L), kOBEXConnectFlag4Reserved = ( 1 << 4L), kOBEXConnectFlag5Reserved = ( 1 << 5L), kOBEXConnectFlag6Reserved = ( 1 << 6L), kOBEXConnectFlag7Reserved = ( 1 << 7L), };
OBEXErrorCodes |
Codes for OBEX errors. If the return value was not in the following range, then it is most likely resulting from kernel code/IOKit, and you should consult IOReturn.h for those codes.
See Also:
OBEXError
enum OBEXErrorCodes { kOBEXErrorRangeMin = -21850, kOBEXErrorRangeMax = -21899, kOBEXSuccess = 0, // Success at whatever you were attempting. kOBEXGeneralError = -21850, // Catch all for misc. errors. kOBEXNoResourcesError = -21851, // An allocation failed, etc. kOBEXUnsupportedError = -21852, // We don't currently handle whatever you are trying to do. kOBEXInternalError = -21853, // A problem has occurred in our internal code. kOBEXBadArgumentError = -21854, // A bad argument was passed to an OBEX function. kOBEXTimeoutError = -21855, // timeout error kOBEXBadRequestError = -21856, // bad request error kOBEXCancelledError = -21857, kOBEXSessionBusyError = -21875, // Session is busy with a command already. kOBEXSessionNotConnectedError = -21876, // Session does not have an open connection. kOBEXSessionBadRequestError = -21877, // Whatever you are trying to do is invalid (trying to send more data than the max packet size supports, e.g.). kOBEXSessionBadResponseError = -21878, // The OBEX Server/client you are talking to has sent us a bad response (e.g. when a Connect Command was sent, we got back "0xA0", which is not correct). kOBEXSessionNoTransportError = -21879, // The underlying transport (Bluetooth, etc.) is not open/available. kOBEXSessionTransportDiedError = -21880, // The underlying transport connection (Bluetooth, etc.) died. kOBEXSessionTimeoutError = -21881, // Timeout occurred performing an operation. kOBEXSessionAlreadyConnectedError = -21882 // Connection over OBEX already established (returned from OBEXConnect). };
kOBEXErrorRangeMinMinimum value in OBEX error range.
kOBEXErrorRangeMaxMaximum value in OBEX error range.
OBEXHeaderIdentifiers |
Identifiers for OBEX Headers.
enum OBEXHeaderIdentifiers { kOBEXHeaderIDName = 0x01, kOBEXHeaderIDDescription = 0x05, kOBEXHeaderIDReservedRangeStart = 0x10, kOBEXHeaderIDReservedRangeEnd = 0x2F, kOBEXHeaderIDUserDefinedRangeStart = 0x30, kOBEXHeaderIDUserDefinedRangeEnd = 0x3F, kOBEXHeaderIDType = 0x42, kOBEXHeaderIDTimeISO = 0x44, kOBEXHeaderIDTarget = 0x46, kOBEXHeaderIDHTTP = 0x47, kOBEXHeaderIDBody = 0x48, kOBEXHeaderIDEndOfBody = 0x49, kOBEXHeaderIDWho = 0x4A, kOBEXHeaderIDAppParameters = 0x4C, kOBEXHeaderIDAuthorizationChallenge = 0x4D, kOBEXHeaderIDAuthorizationResponse = 0x4E, kOBEXHeaderIDObjectClass = 0x4F, kOBEXHeaderIDCount = 0xC0, kOBEXHeaderIDLength = 0xC3, kOBEXHeaderIDTime4Byte = 0xC4, kOBEXHeaderIDConnectionID = 0xCB, };
kOBEXHeaderIDNameName of the object. Null terminated unicode text.
kOBEXHeaderIDDescriptionText description of the object. Null terminated unicode text.
kOBEXHeaderIDReservedRangeStartRange includes all combos of the upper 2 bits. Reserved.
kOBEXHeaderIDReservedRangeEndRange includes all combos of the upper 2 bits. Reserved.
kOBEXHeaderIDUserDefinedRangeStartRange includes all combos of the upper 2 bits. User defined.
kOBEXHeaderIDUserDefinedRangeEndRange includes all combos of the upper 2 bits. User defined.
kOBEXHeaderIDTypeType of object - e.g. text, html, binary, etc. Null terminated ASCII text.
kOBEXHeaderIDTimeISODate/time stamp - ISO8601 version of time. (YYYYMMDDTHHMMSSZ)
kOBEXHeaderIDTargetName of service that operation is destined for.
kOBEXHeaderIDHTTPAn HTTP 1.x header.
kOBEXHeaderIDBodyA Chunk of the object body.
kOBEXHeaderIDEndOfBodyThe last checking of the object body.
kOBEXHeaderIDWhoIdentifies the OBEX applications, used to tell if talking to a peer.
kOBEXHeaderIDAppParametersExtended application request and resposnse info.
kOBEXHeaderIDAuthorizationChallengeAuthentication digest-challenge.
kOBEXHeaderIDAuthorizationResponseAuthentication digest-reponse.
kOBEXHeaderIDObjectClassOBEX Object - class of object.
kOBEXHeaderIDCountNumber of objects (used in Connect command).
kOBEXHeaderIDLengthThe length of the object in bytes. 4 byte unsigned integer value.
kOBEXHeaderIDTime4ByteDate/time stamp - 4 byte version for compat. only. Seconds since Jan 1, 1970.
kOBEXHeaderIDConnectionIDAn identifier used for OBEX connection multiplexing.
OBEXNonceFlags |
Flags for Nonce command during digest challenge.
See Also:
OBEXNonceFlagValues
enum OBEXNonceFlagValues { kOBEXNonceFlagNone = ( 0 << 0L), kOBEXNonceFlagSendUserIDInResponse = ( 1 << 0L), kOBEXNonceFlagAccessModeReadOnly = ( 1 << 1L), kOBEXNonceFlag2Reserved = ( 1 << 2L), kOBEXNonceFlag3Reserved = ( 1 << 3L), kOBEXNonceFlag4Reserved = ( 1 << 4L), kOBEXNonceFlag5Reserved = ( 1 << 5L), kOBEXNonceFlag6Reserved = ( 1 << 6L), kOBEXNonceFlag7Reserved = ( 1 << 7L), };
OBEXNonceFlagValues |
Flags for Nonce command during digest challenge.
See Also:
OBEXNonceFlags
enum OBEXNonceFlagValues { kOBEXNonceFlagNone = ( 0 << 0L), kOBEXNonceFlagSendUserIDInResponse = ( 1 << 0L), kOBEXNonceFlagAccessModeReadOnly = ( 1 << 1L), kOBEXNonceFlag2Reserved = ( 1 << 2L), kOBEXNonceFlag3Reserved = ( 1 << 3L), kOBEXNonceFlag4Reserved = ( 1 << 4L), kOBEXNonceFlag5Reserved = ( 1 << 5L), kOBEXNonceFlag6Reserved = ( 1 << 6L), kOBEXNonceFlag7Reserved = ( 1 << 7L), };
OBEXOpCodeCommandValues |
Operation OpCode values for commands.
enum OBEXOpCodeCommandValues { kOBEXOpCodeReserved = 0x04, kOBEXOpCodeConnect = 0x80, // High bit always set. kOBEXOpCodeDisconnect = 0x81, // High bit always set. kOBEXOpCodePut = 0x02, kOBEXOpCodePutWithHighBitSet = 0x82, kOBEXOpCodeGet = 0x03, kOBEXOpCodeGetWithHighBitSet = 0x83, kOBEXOpCodeReservedWithHighBitSet = 0x84, kOBEXOpCodeSetPath = 0x85, // High bit always set. kOBEXOpCodeAbort = 0xFF, // High bit always set. kOBEXOpCodeReservedRangeStart = 0x06, kOBEXOpCodeReservedRangeEnd = 0x0F, kOBEXOpCodeUserDefinedStart = 0x10, kOBEXOpCodeUserDefinedEnd = 0x1F, };
OBEXOpCodeResponseValues |
Response opCode values.
enum OBEXOpCodeResponseValues { kOBEXResponseCodeReservedRangeStart = 0x00, kOBEXResponseCodeReservedRangeEnd = 0x0F, kOBEXResponseCodeContinue = 0x10, kOBEXResponseCodeContinueWithFinalBit = 0x90, kOBEXResponseCodeSuccess = 0x20, kOBEXResponseCodeSuccessWithFinalBit = 0xA0, kOBEXResponseCodeCreated = 0x21, kOBEXResponseCodeCreatedWithFinalBit = 0xA1, kOBEXResponseCodeAccepted = 0x22, kOBEXResponseCodeAcceptedWithFinalBit = 0xA2, kOBEXResponseCodeNonAuthoritativeInfo = 0x23, kOBEXResponseCodeNonAuthoritativeInfoWithFinalBit = 0xA3, kOBEXResponseCodeNoContent = 0x24, kOBEXResponseCodeNoContentWithFinalBit = 0xA4, kOBEXResponseCodeResetContent = 0x25, kOBEXResponseCodeResetContentWithFinalBit = 0xA5, kOBEXResponseCodePartialContent = 0x26, kOBEXResponseCodePartialContentWithFinalBit = 0xA6, kOBEXResponseCodeMultipleChoices = 0x30, kOBEXResponseCodeMultipleChoicesWithFinalBit = 0xB0, kOBEXResponseCodeMovedPermanently = 0x31, kOBEXResponseCodeMovedPermanentlyWithFinalBit = 0xB1, kOBEXResponseCodeMovedTemporarily = 0x32, kOBEXResponseCodeMovedTemporarilyWithFinalBit = 0xB2, kOBEXResponseCodeSeeOther = 0x33, kOBEXResponseCodeSeeOtherWithFinalBit = 0xB3, kOBEXResponseCodeNotModified = 0x34, kOBEXResponseCodeNotModifiedWithFinalBit = 0xB4, kOBEXResponseCodeUseProxy = 0x35, kOBEXResponseCodeUseProxyWithFinalBit = 0xB5, kOBEXResponseCodeBadRequest = 0x40, kOBEXResponseCodeBadRequestWithFinalBit = 0xC0, kOBEXResponseCodeUnauthorized = 0x41, kOBEXResponseCodeUnauthorizedWithFinalBit = 0xC1, kOBEXResponseCodePaymentRequired = 0x42, kOBEXResponseCodePaymentRequiredWithFinalBit = 0xC2, kOBEXResponseCodeForbidden = 0x43, kOBEXResponseCodeForbiddenWithFinalBit = 0xC3, kOBEXResponseCodeNotFound = 0x44, kOBEXResponseCodeNotFoundWithFinalBit = 0xC4, kOBEXResponseCodeMethodNotAllowed = 0x45, kOBEXResponseCodeMethodNotAllowedWithFinalBit = 0xC5, kOBEXResponseCodeNotAcceptable = 0x46, kOBEXResponseCodeNotAcceptableWithFinalBit = 0xC6, kOBEXResponseCodeProxyAuthenticationRequired = 0x47, kOBEXResponseCodeProxyAuthenticationRequiredWithFinalBit= 0xC7, kOBEXResponseCodeRequestTimeOut = 0x48, kOBEXResponseCodeRequestTimeOutWithFinalBit = 0xC8, kOBEXResponseCodeConflict = 0x49, kOBEXResponseCodeConflictWithFinalBit = 0xC9, kOBEXResponseCodeGone = 0x4A, kOBEXResponseCodeGoneWithFinalBit = 0xCA, kOBEXResponseCodeLengthRequired = 0x4B, kOBEXResponseCodeLengthRequiredFinalBit = 0xCB, kOBEXResponseCodePreconditionFailed = 0x4C, kOBEXResponseCodePreconditionFailedWithFinalBit = 0xCC, kOBEXResponseCodeRequestedEntityTooLarge = 0x4D, kOBEXResponseCodeRequestedEntityTooLargeWithFinalBit = 0xCD, kOBEXResponseCodeRequestURLTooLarge = 0x4E, kOBEXResponseCodeRequestURLTooLargeWithFinalBit = 0xCE, kOBEXResponseCodeUnsupportedMediaType = 0x4F, kOBEXResponseCodeUnsupportedMediaTypeWithFinalBit = 0xCF, kOBEXResponseCodeInternalServerError = 0x50, kOBEXResponseCodeInternalServerErrorWithFinalBit = 0xD0, kOBEXResponseCodeNotImplemented = 0x51, kOBEXResponseCodeNotImplementedWithFinalBit = 0xD1, kOBEXResponseCodeBadGateway = 0x52, kOBEXResponseCodeBadGatewayWithFinalBit = 0xD2, kOBEXResponseCodeServiceUnavailable = 0x53, kOBEXResponseCodeServiceUnavailableWithFinalBit = 0xD3, kOBEXResponseCodeGatewayTimeout = 0x54, kOBEXResponseCodeGatewayTimeoutWithFinalBit = 0xD4, kOBEXResponseCodeHTTPVersionNotSupported = 0x55, kOBEXResponseCodeHTTPVersionNotSupportedWithFinalBit = 0xD5, kOBEXResponseCodeDatabaseFull = 0x60, kOBEXResponseCodeDatabaseFullWithFinalBit = 0xE0, kOBEXResponseCodeDatabaseLocked = 0x61, kOBEXResponseCodeDatabaseLockedWithFinalBit = 0xE1, };
OBEXPutFlags |
Flags for Put command.
See Also:
OBEXPutFlagValues
enum OBEXPutFlagValues { kOBEXPutFlagNone = ( 0 << 0L), kOBEXPutFlagGoToParentDirFirst = ( 1 << 0L), kOBEXPutFlagDontCreateDirectory = ( 1 << 1L), kOBEXPutFlag2Reserved = ( 1 << 2L), kOBEXPutFlag3Reserved = ( 1 << 3L), kOBEXPutFlag4Reserved = ( 1 << 4L), kOBEXPutFlag5Reserved = ( 1 << 5L), kOBEXPutFlag6Reserved = ( 1 << 6L), kOBEXPutFlag7Reserved = ( 1 << 7L), };
OBEXPutFlagValues |
Flags for Put command.
See Also:
OBEXPutFlags
enum OBEXPutFlagValues { kOBEXPutFlagNone = ( 0 << 0L), kOBEXPutFlagGoToParentDirFirst = ( 1 << 0L), kOBEXPutFlagDontCreateDirectory = ( 1 << 1L), kOBEXPutFlag2Reserved = ( 1 << 2L), kOBEXPutFlag3Reserved = ( 1 << 3L), kOBEXPutFlag4Reserved = ( 1 << 4L), kOBEXPutFlag5Reserved = ( 1 << 5L), kOBEXPutFlag6Reserved = ( 1 << 6L), kOBEXPutFlag7Reserved = ( 1 << 7L), };
OBEXRealmValues |
Values for Realm during digest response.
enum OBEXRealmValues { kOBEXRealmASCII = 0x00, kOBEXRealmISO88591 = 0x01, kOBEXRealmISO88592 = 0x02, kOBEXRealmISO88593 = 0x03, kOBEXRealmISO88594 = 0x04, kOBEXRealmISO88595 = 0x05, kOBEXRealmISO88596 = 0x06, kOBEXRealmISO88597 = 0x07, kOBEXRealmISO88598 = 0x08, kOBEXRealmISO88599 = 0x09, kOBEXRealmUNICODE = 0xFF, };
OBEXSessionEventTypes |
enum OBEXSessionEventTypes { // Client event types. kOBEXSessionEventTypeConnectCommandResponseReceived = 'OCEC', kOBEXSessionEventTypeDisconnectCommandResponseReceived = 'OCED', kOBEXSessionEventTypePutCommandResponseReceived = 'OCEP', kOBEXSessionEventTypeGetCommandResponseReceived = 'OCEG', kOBEXSessionEventTypeSetPathCommandResponseReceived = 'OCES', kOBEXSessionEventTypeAbortCommandResponseReceived = 'OCEA', // Server event types. kOBEXSessionEventTypeConnectCommandReceived = 'OSEC', kOBEXSessionEventTypeDisconnectCommandReceived = 'OSED', kOBEXSessionEventTypePutCommandReceived = 'OSEP', kOBEXSessionEventTypeGetCommandReceived = 'OSEG', kOBEXSessionEventTypeSetPathCommandReceived = 'OSES', kOBEXSessionEventTypeAbortCommandReceived = 'OSEA', // Shared (Server/client) event types. kOBEXSessionEventTypeError = 'OGEE', };
When a new session event occurs, your selector (or C callback) will be given an OBEXSessionEvent pointer, and in it will be a 'type' field with one of the following types in it. Based on that type, you can then read the corresponding field in the union to get out interesting data for that event type. For example, if the type of an event is a 'kOBEXSessionEventTypeConnectCommandResponseReceived', you should look in the 'OBEXConnectCommandResponseData' part of the structure's union to find more information pased to you in the event. Note that some you will never see, depending on the type of session you are using - a client or server. If you are a client (most likely case), you will never see the "Command" events, but instead you will only receive the "CommandResponse" events since you will be the issuer oft he commands, not the receiver of them. Both types of sessions will receive error type events.
OBEXVersions |
The available/supported OBEX versions. Currently there is only one!
enum OBEXVersions { kOBEXVersion10 = 0x10, };
GET_HEADER_ID_IS_1_BYTE_QUANTITY |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define GET_HEADER_ID_IS_1_BYTE_QUANTITY( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
GET_HEADER_ID_IS_4_BYTE_QUANTITY |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define GET_HEADER_ID_IS_4_BYTE_QUANTITY( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
GET_HEADER_ID_IS_BYTE_SEQUENCE |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define GET_HEADER_ID_IS_BYTE_SEQUENCE( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
GET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define GET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
IS_RESPONSE_CODE_FINAL_BIT_SET |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define IS_RESPONSE_CODE_FINAL_BIT_SET( RESPONSE_CODE )
The API should shield you from using these, they are included here to completeness.
OBEX Convenience Macros. |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
GET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT
GET_HEADER_ID_IS_BYTE_SEQUENCE
GET_HEADER_ID_IS_1_BYTE_QUANTITY
GET_HEADER_ID_IS_4_BYTE_QUANTITY
SET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT
SET_HEADER_ID_IS_BYTE_SEQUENCE
SET_HEADER_ID_IS_1_BYTE_QUANTITY
SET_HEADER_ID_IS_4_BYTE_QUANTITY
IS_RESPONSE_CODE_FINAL_BIT_SET
STRIP_RESPONSE_CODE_FINAL_BIT
#define GET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT( HEADER_ID ) #define GET_HEADER_ID_IS_BYTE_SEQUENCE( HEADER_ID ) #define GET_HEADER_ID_IS_1_BYTE_QUANTITY( HEADER_ID ) #define GET_HEADER_ID_IS_4_BYTE_QUANTITY( HEADER_ID ) #define SET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT( HEADER_ID ) #define SET_HEADER_ID_IS_BYTE_SEQUENCE( HEADER_ID ) #define SET_HEADER_ID_IS_1_BYTE_QUANTITY( HEADER_ID ) #define SET_HEADER_ID_IS_4_BYTE_QUANTITY( HEADER_ID ) #define IS_RESPONSE_CODE_FINAL_BIT_SET( RESPONSE_CODE ) #define STRIP_RESPONSE_CODE_FINAL_BIT( RESPONSE_CODE )
The API should shield you from using these, they are included here to completeness.
SET_HEADER_ID_IS_1_BYTE_QUANTITY |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define SET_HEADER_ID_IS_1_BYTE_QUANTITY( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
SET_HEADER_ID_IS_4_BYTE_QUANTITY |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define SET_HEADER_ID_IS_4_BYTE_QUANTITY( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
SET_HEADER_ID_IS_BYTE_SEQUENCE |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define SET_HEADER_ID_IS_BYTE_SEQUENCE( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
SET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define SET_HEADER_ID_IS_NULL_TERMINATED_UNICODE_TEXT( HEADER_ID )
The API should shield you from using these, they are included here to completeness.
STRIP_RESPONSE_CODE_FINAL_BIT |
Convenience Macros for working with OBEX Header Identifiers.
See Also:
OBEX
#define STRIP_RESPONSE_CODE_FINAL_BIT( RESPONSE_CODE )
The API should shield you from using these, they are included here to completeness.
|
Last Updated: 2008-08-07