This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Need help on file transfer profile on CC2540

Other Parts Discussed in Thread: CC2540, CC2564

Hi All,

I need to implement File transfer / object push profile on ble cc2540 , however i do know this profiles are more suitable for BR/EDR Classic bluetooth. first thing i would like to know is ,  whether File transfer profiles can be implemented on BLE or is there any limitation?

I have tried using SimpleBLEPeripheral Profile and sending 20bytes notify charactristic on it, but considering android app running on smart phone at other end to receive file would need also this custom profile implemented. So if i can implement FTP/OPP profile implemented on CC2540 it would be great.

Does ti support this profile Or any Reference code for this available which can be used with TI platform?

Please help me out on this.

  • Hi,

    We do not have any FTP/OPP profile supported in our SDK. But you are free to add them and use it. But do note that BLE is used low through put applications. You can have amximum throughput of 50-60 kbps with BLE. Does this satisfy your requirement?

    Regards,
    Arun
  • Hi Arun,

    Troughput you mentioned should be fine. So would there be any reference code for FTP/OPP which can be helpful to port it for CC2540 ?


    Regards,

    Vismay

  • Hi,

    TI does not have any sample code for CC2540. But you can check for this in the CC2564 forum and its SDK as CC2564 supports classic bluetooth. I am not sure whether they support FTP/OPP profiles in it. 

    Regards,

    Arun

  • I am currently working on an over the air download implementation. TI has sample code for this. I have made some modifications to it but basically, you transfer blocks of 16-bytes along with a 4-byte block number. You could use this format to transfer a file block by block and use the block number to store it in the right order. You would only need one 20 byte characteristic that will be used to transfer the file.
    Take a look at the OAD Manager project and OAD guide that is available for more info. The roles here are a bit reversed as you want to send a file from the peripheral to an Android device. You would just want to send notifications from the peripheral that contain the blocks. The Android device would just handle the notifications by storing the blocks accordingly. The Android device doesn't need to have a custom profile. It can just get the notifications sent from the peripheral running the custom profile (Peripheral is GATT Server, Android is GATT Client). Of course, there are multiple options for implementation here.

    http://processors.wiki.ti.com/images/8/82/OAD_for_CC254x.pdf

    Currently, I am able to transfer 4 blocks per connection interval @ 20ms conn. interval. This results in about a 40s download of a 124KB file.
    Here is an open question that I am involved in. This will clue you into how I modified the OAD project.
    http://e2e.ti.com/support/wireless_connectivity/f/538/p/343779/1377883

    Not sure if this solution is completely what you are looking for but I hope this helps.
    Please correct me if I'm wrong, Arun.
  • Erick,

    I really appreciate your help. I will try OAD profile and will get back to you soon if any issue comes.

    Thanks and Regards,

    Vismay