10-09-2013 01:27 AM
10-09-2013 05:29 AM
The story is a bit more complicated Here's the list of supported Tags: https://developer.blackberry.com/native/documentat
As I understand it, an Octopus card is a Felica card using JIS: X6319-4 at the bottom of the NFC stack. JIS: X6319-4 is in fact the same as NFC Forum “F” ISO 18092. On BlackBerry 10 we can currently support Felica (Non-secure) ONLY as an NFC Type-3 NDEF tag in reader/writer mode. We can’t talk to it in Reader/Writer mode when it’s formatted as anything other than a Type-3 NDEF tag as you would probably want to do if the tag was formatted as an Octopus card with stored value.
I certainly know that BlackBerry Product Management is aware of this as being an important use case since many transport cards in Asia are based on Felica. I've also contacted NFC Product Management to ascertain the latest status of their thinking on this use case and I'll let you know if there's any updates.
10-09-2013 06:07 AM
10-09-2013 10:31 AM
On Oyster card:
I think you'll struggle reading Oyster cards... at least the ones we have in London. These are Mifare DESFire EV1 cards I think and whilst we support them, you won't have the crypto keys needed to access their data.
10-09-2013 09:04 PM
10-10-2013 02:40 AM
I think so but I'm not 100% sure. I looked into Oyster card briefly last year and came away with the impression that you could do nothing with them from an app unless you have the DES keys. I couldn't find any documentation either and google found little more than discussions like the one we're having now.
10-11-2013 06:29 AM
Right! Finally got to the bottom of this.
The good news is that Felica support for reading and writing NFC targets is indeed in 10.2.0!!!
The way that you use it is as follows. Felica is ISO18092 so you register to be notified of a Felica target being presented using:
and one a Felica card is presented you interact with it via APDUs using:
It's exactly the same pattern as used for interacting with a ISO14443-3 target where you'd use:
); // ... and nfc_tag_transceive(target, TAG_TYPE_ISO_14443_3,...);
or an ISO15693-3 target using
); // ... and nfc_tag_transceive(target, TAG_TYPE_ISO_15693_3,...);
The public documentation (https://developer.blackberry.com/native/reference/
/** * @brief Write a command to one of the following connections: ISO 14443, * ISO 15693, or ISO 18092. * @details This function writes a command to one of the following connections: * ISO 14443, ISO 15693, or ISO 18092. * * @param tag The tag returned from the @c nfc_get_target() function. * @param type The type of tag to write to. This must be * @c #TAG_TYPE_ISO_14443_3, @c #TAG_TYPE_ISO_15693_3, or * @c #TAG_TYPE_ISO_18092. * @param command A pointer to the buffer holding the command to be sent. * @param command_length The length of the command buffer. * @param response A pointer to a preallocated response buffer. * @param max_response_length The length of the preallocated response buffer. * The maximum length cannot be larger than the size * of @c NFC_TRANSCEIVE_RESPONSE_MAX_BUFFER_LENGTH. * @param response_length The length of the response copied into the response * buffer. * * @return @c #NFC_RESULT_SUCCESS, or one of the following: * - @c #NFC_RESULT_INVALID_PARAMETER: A parameter is invalid. * - @c #NFC_RESULT_SERVICE_CONNECTION_ERROR: The application is not * connected to the NFC system. * - @c #NFC_RESULT_OUT_OF_MEMORY: The system memory available for * the NFC system to complete this operation is insufficient. * - @c #NFC_RESULT_OPERATION_NOT_SUPPORTED: The operation is not supported. */ NFC_API nfc_result_t nfc_tag_transceive(const nfc_target_t *tag, nfc_tag_type_t type, const uchar_t *command, size_t command_length, uchar_t *response, size_t max_response_length, size_t *response_length);
So, it looks like this change to the API hasn't found it's way correctly to the web doumentation -- this is what has caused the confusion but this will be fixed :-).
That means you should be able to communicate with an Octopus card if you know the correct format of APDUs to send to the card! Let me know how you get on!