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.

CC2560B: Bluetopia CC2560A vs CC2560B

Part Number: CC2560B
Other Parts Discussed in Thread: CC2567, CC2564, CC256XMSPBTBLESW

Hello. In 2014 we made a production of a device with the CC2560A and now we have made a new production of the same device but the CC2560A was not in stock and we have had to use the CC2560B. When we have download the firmware including the bluetopia into the device it is not working. Can anyone tell me if we have to change whatever on it to make it work?

Thanks for your attention.

Javier

  • Javier,

    The CC2560B has a different (newer) ROM than the older CC2560A. So the device service-pack for each of these devices are different. If your host code is downloading the CC2560A service-pack on the CC2560B device, the failure will happen. Depending on the Bluetopia stack version you are using, there might already be an option to compile the MCU application with CC256xB instead. Please check your BTPSVEND.c file.

    Best regards,
    Vihang
  • Hello Vihang,

    First of all, thanks a lot for answer me.

    I have opened the BTPSVEND.c and it says the following:

    *****< btpsvend.c >***********************************************************/
    /* Copyright 2008 - 2012 Stonestreet One. */
    /* All Rights Reserved. */
    /* */
    /* BTPSVEND - Vendor specific functions/definitions used to define a set of */
    /* vendor specific functions supported by the Bluetopia Protocol */
    /* Stack. These functions may be unique to a given hardware */
    /* platform. */
    /* */
    /* Author: Dave Wooldridge */
    /* */
    /*** MODIFICATION HISTORY *****************************************************/
    /* */
    /* mm/dd/yy F. Lastname Description of Modification */
    /* -------- ----------- ------------------------------------------------*/
    /* 03/14/08 D. Wooldridge Initial creation. */
    /******************************************************************************/
    #include "SS1BTPS.h" /* Bluetopia API Prototypes/Constants. */
    #include "HCIDRV.h"
    #include "HCITRANS.h"

    #include "BTPSKRNL.h"
    #include "BTPSVEND.h"

    #include "Main.h"
    #include <stdlib.h>

    /* By default we will include the PAN1316 patch (which is the smaller*/
    /* patch version). This can be used on the CC2560A, CC2564, CC2567 */
    /* and CC2569 TI Chipsets.

    So, it does not says that it can be also used by CC2560B. So, I do not know then what we have to make now with this. In fact, the engineer that made the firmware is now not working with us, so, I am quite lost.

    Thanks for your help and best regards,

    Javier

  • Javier Herrero de la Cal said:

    /* By default we will include the PAN1316 patch (which is the smaller*/
    /* patch version). This can be used on the CC2560A, CC2564, CC2567 */
    /* and CC2569 TI Chipsets.

    So, it does not says that it can be also used by CC2560B.

    The comment says that the default patch (another term used for the service-pack) is applicable for the devices mentioned in the comments. The default patch will not work on the CC256xB devices.

    Javier Herrero de la Cal said:
    So, I do not know then what we have to make now with this. In fact, the engineer that made the firmware is now not working with us, so, I am quite lost.

    Please share the lines following the one copied from the BTPSVEND.c. Typically, there is a compiler flag (like the example below) that is used to select CC256xA vs. the CC256xB at the compile time.

    ...
    #ifndef __SUPPORT_CC256XB_PATCH__
    
       #include "CC256X.h"
    
    #else
    
       #include "CC256XB.h"
    
    #endif
    ...

    From your file header, it looks like your Bluetopia version is pretty old (date from 2008). Chances are the header files might have different names. 

  • Hello. So, I suppose that then we have to change it to the following stack? We have a MSP430 MCU connected to the CC2560B chip.

    TI Dual-mode Bluetooth® stack on MSP430™ MCUs CC256XMSPBTBLESW

    Is then anyone there that can make the changes we need for this problem. I mean, we have a firmware that what it makes is sending data by Bluetooth serial port using that Bluetopia stack and now it should be changed to the new bluetooth stack. The engineer that desiged the product is not still working with us, so, maybe for us is better find someone there that maybe can make this for us.

    Best regards,
  • /*****< btpsvend.c >***********************************************************/
    /*      Copyright 2008 - 2012 Stonestreet One.                                */
    /*      All Rights Reserved.                                                  */
    /*                                                                            */
    /*  BTPSVEND - Vendor specific functions/definitions used to define a set of  */
    /*             vendor specific functions supported by the Bluetopia Protocol  */
    /*             Stack.  These functions may be unique to a given hardware      */
    /*             platform.                                                      */
    /*                                                                            */
    /*  Author:  Dave Wooldridge                                                  */
    /*                                                                            */
    /*** MODIFICATION HISTORY *****************************************************/
    /*                                                                            */
    /*   mm/dd/yy  F. Lastname    Description of Modification                     */
    /*   --------  -----------    ------------------------------------------------*/
    /*   03/14/08  D. Wooldridge  Initial creation.                               */
    /******************************************************************************/
    #include "SS1BTPS.h"          /* Bluetopia API Prototypes/Constants.          */
    #include "HCIDRV.h"
    #include "HCITRANS.h"
    
    #include "BTPSKRNL.h"
    #include "BTPSVEND.h"
    
    #include "Main.h"
    #include <stdlib.h>
    
       /* By default we will include the PAN1316 patch (which is the smaller*/
       /* patch version).  This can be used on the CC2560A, CC2564, CC2567  */
       /* and CC2569 TI Chipsets.                                           */
    
    #ifdef __SUPPORT_PAN1315_PATCH__
    
       #include "Patch_PAN1315.h"
    
    #else
    
       #include "Patch_PAN1316.h"
    
    #endif
    
       /* Miscellaneous Type Declarations.                                  */
    
    #define RETURN_BUFFER_SIZE  (32)    /* Represents a size large enough   */
                                        /* to hold the return result from   */
                                        /* any of the patch ram setup       */
                                        /* commands.                        */
    
       /* The following variable is used to track whether or not the Vendor */
       /* Specific Commands (and Patch RAM commands) have already been      */
       /* issued to the device.  This is done so that we do not issue them  */
       /* more than once for a single device (there is no need).  They could*/
       /* be potentially issued because the HCI Reset hooks (defined below) */
       /* are called for every HCI_Reset() that is issued.                  */
    
    //cambiar direcci�n mac bluetooth
    #define VS_COMMAND_OGF(_CommandOpcode)       ((Byte_t)((_CommandOpcode) >> 10))
    #define VS_COMMAND_OCF(_CommandOpcode)       ((Word_t)((_CommandOpcode) & (0x3FF)))
    #define VS_WRITE_BD_ADDRESS_COMMAND_OPCODE   0xFC06
    #define Display(_x)                 do { BTPS_OutputMessage _x; } while(0)
    //////////////////////////////////////////////////////////////////////////////////
    
    static Boolean_t VendorCommandsIssued;
    
       /* Internal Function Prototypes.                                     */
    static void MovePatchBytes(unsigned char *Dest, unsigned long *Source, unsigned int Length);
    static Boolean_t Download_Patch(unsigned int BluetoothStackID, unsigned int PatchLength, unsigned long PatchPointer, Byte_t *ReturnBuffer, Byte_t *TempBuffer);
    
       /* The following function is used to copy BTPSVEND_PATCH_LOCATION    */
       /* Patch data to a local buffer.  This is done because a SMALL data  */
       /* model configuration can't access data past 64k.  The function     */
       /* receives as its first parameter the pointer to the buffer to copy */
       /* from 20 bit memory into.  The second parameter is a pointer       */
       /* (stored as an unsigned long) to the data to copy from 20 bit      */
       /* memory.  The last parameter is the number of bytes that are to be */
       /* moved.                                                            */
    static void MovePatchBytes(unsigned char *Dest, unsigned long *Source, unsigned int Length)
    {
       /* Check to make sure that the parameters passed in appear valid.    */
       if((Source) && (Dest) && (Length))
       {
    
    #ifdef __TI_COMPILER_VERSION__
    
          /* Copy all of the requested data from Data 20 memory into Data 16*/
          /* memory.                                                        */
          while(Length--)
             *Dest++ = _data20_read_char((*Source)++);
    
    #else
    
    #ifdef __IAR_SYSTEMS_ICC__
    
          /* Copy all of the requested data from Data 20 memory into Data 16*/
          /* memory.                                                        */
          while(Length--)
             *Dest++ = *((unsigned char BTPSVEND_PATCH_LOCATION *)(*Source)++);
    
    #endif
    
    #endif
    
       }
       else
       {
          /* Clear the Packet Flag.                                         */
          *Dest = 0;
       }
    }
    
       /* The following function is provided to allow a mechanism to        */
       /* download the specified Patch Data to the CC25xx device.  This     */
       /* function does not disable the co-processor.  This function returns*/
       /* TRUE if successful or FALSE if there was an error.                */
    static Boolean_t Download_Patch(unsigned int BluetoothStackID, unsigned int PatchLength, unsigned long PatchPointer, Byte_t *ReturnBuffer, Byte_t *TempBuffer)
    {
       int           Result;
       int           Cnt;
       Byte_t        Status;
       Byte_t        OGF;
       Byte_t        Length;
       Word_t        OCF;
       Boolean_t     ret_val;
       unsigned long Temp;
       unsigned int  PatchLen;
    
       /* First, make sure the input parameters appear to be semi-valid.    */
       if((BluetoothStackID) && (PatchLength) && (PatchPointer))
       {
          ret_val = TRUE;
    
          /* Clear the status value and initialize all variables.     */
          Cnt      = 0;
          PatchLen = PatchLength;
          Temp     = PatchPointer;
          while(PatchLen)
          {
             /* Copy the header data to local buffer and check for a  */
             /* valid start of packet.                                */
             MovePatchBytes(TempBuffer, &Temp, 4);
             if(TempBuffer[0] == 0x01)
             {
                /* Copy the command parameters into Data 16 memory.   */
                MovePatchBytes(&TempBuffer[4], &Temp, TempBuffer[3]);
    
                /* Skip over the first parameter.  The patch data     */
                /* formatted to a specific structure and the first    */
                /* byte is not used in this application.  Get the OGF */
                /* and OCF values an make a call to perform the vendor*/
                /* specific function.                                 */
                OGF     = (TempBuffer[2] >> 2);
                OCF     = ((unsigned short)TempBuffer[1] + ((unsigned short)(TempBuffer[2] & 0x03) << 8));
                Length  = RETURN_BUFFER_SIZE;
    
                Result = HCI_Send_Raw_Command(BluetoothStackID, OGF, OCF, TempBuffer[3], &TempBuffer[4], &Status, &Length, ReturnBuffer, TRUE);
                Cnt++;
    
                /* If the function was successful, update the count   */
                /* and pointer for the next command.                  */
                if((Result < 0) || (Status != 0) || (ReturnBuffer[0]))
                {
                   DBG_MSG(DBG_ZONE_VENDOR, ("PatchDevice[%d] ret_val = %d Status %d Result %d\r\n", Cnt, Result, Status, ReturnBuffer[0]));
                   DBG_MSG(DBG_ZONE_VENDOR, ("Length = %d\r\n",Length));
                   DBG_DUMP(DBG_ZONE_VENDOR, (TempBuffer[3], &TempBuffer[4]));
    
                   ret_val = FALSE;
                   break;
                }
    
                /* Advance to the next Patch Entry.                   */
                PatchLen -= (TempBuffer[3] + 4);
             }
             else
                PatchLen = 0;
          }
       }
       else
          ret_val = FALSE;
    
       return(ret_val);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functionality that needs to be performed before   */
       /* the HCI Communications layer is opened.  This function is called  */
       /* immediately prior to calling the initialization of the HCI        */
       /* Communications layer.  This function should return a BOOLEAN TRUE */
       /* indicating successful completion or should return FALSE to        */
       /* indicate unsuccessful completion.  If an error is returned the    */
       /* stack will fail the initialization process.                       */
       /* * NOTE * The parameter passed to this function is the exact       */
       /*          same parameter that was passed to BSC_Initialize() for   */
       /*          stack initialization.  If this function changes any      */
       /*          members that this pointer points to, it will change the  */
       /*          structure that was originally passed.                    */
       /* * NOTE * No HCI communication calls are possible to be used in    */
       /*          this function because the driver has not been initialized*/
       /*          at the time this function is called.                     */
    Boolean_t BTPSAPI HCI_VS_InitializeBeforeHCIOpen(HCI_DriverInformation_t *HCI_DriverInformation)
    {
       /* Flag that we have not issued the first Vendor Specific Commands   */
       /* before the first reset.                                           */
       VendorCommandsIssued = FALSE;
    
       return(TRUE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functionality after the HCI Communications layer  */
       /* is initialized (the driver only).  This function is called        */
       /* immediately after returning from the initialization of the HCI    */
       /* Communications layer (HCI Driver).  This function should return a */
       /* BOOLEAN TRUE indicating successful completion or should return    */
       /* FALSE to indicate unsuccessful completion.  If an error is        */
       /* returned the stack will fail the initialization process.          */
       /* * NOTE * No HCI layer function calls are possible to be used in   */
       /*          this function because the actual stack has not been      */
       /*          initialized at this point.  The only initialization that */
       /*          has occurred is with the HCI Driver (hence the HCI       */
       /*          Driver ID that is passed to this function).              */
    Boolean_t BTPSAPI HCI_VS_InitializeAfterHCIOpen(unsigned int HCIDriverID)
    {
       return(TRUE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functions after the HCI Communications layer AND  */
       /* the HCI Stack layer has been initialized.  This function is called*/
       /* after all HCI functionality is established, but before the initial*/
       /* HCI Reset is sent to the stack.  The function should return a     */
       /* BOOLEAN TRUE to indicate successful completion or should return   */
       /* FALSE to indicate unsuccessful completion.  If an error is        */
       /* returned the stack will fail the initialization process.          */
       /* * NOTE * At the time this function is called HCI Driver and HCI   */
       /*          layer functions can be called, however no other stack    */
       /*          layer functions are able to be called at this time       */
       /*          (hence the HCI Driver ID and the Bluetooth Stack ID      */
       /*          passed to this function).                                */
    Boolean_t BTPSAPI HCI_VS_InitializeBeforeHCIReset(unsigned int HCIDriverID, unsigned int BluetoothStackID)
    {
       /* If we haven't issued the Vendor Specific Commands yet, then go    */
       /* ahead and issue them.  If we have, then there isn't anything to   */
       /* do.                                                               */
       if(!VendorCommandsIssued)
       {
          /* Flag that we have issued the Vendor Specific Commands (so we   */
          /* don't do it again if someone issues an HCI_Reset().            */
          VendorCommandsIssued = TRUE;
       }
    
       return(TRUE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functionality after the HCI layer has issued any  */
       /* HCI Reset as part of the initialization.  This function is called */
       /* after all HCI functionality is established, just after the initial*/
       /* HCI Reset is sent to the stack.  The function should return a     */
       /* BOOLEAN TRUE to indicate successful completion or should return   */
       /* FALSE to indicate unsuccessful completion.  If an error is        */
       /* returned the stack will fail the initialization process.          */
       /* * NOTE * At the time this function is called HCI Driver and HCI   */
       /*          layer functions can be called, however no other stack    */
       /*          layer functions are able to be called at this time (hence*/
       /*          the HCI Driver ID and the Bluetooth Stack ID passed to   */
       /*          this function).                                          */
    Boolean_t BTPSAPI HCI_VS_InitializeAfterHCIReset(unsigned int HCIDriverID, unsigned int BluetoothStackID)
    {
       Byte_t    *TempBuf;
       Byte_t    *ReturnBuffer;
       Boolean_t  ret_val;
       Byte_t     BD_Addr[6];
       char*      pEnd;
       Byte_t     OGF;   
       Byte_t     Length;   
       Word_t     OCF;   
       Byte_t     Buffer[32];   
       Byte_t     Status;
    
       /* Verify that the parameters that were passed in appear valid.      */
       if((HCIDriverID) && (BluetoothStackID))
       {
          DBG_MSG(DBG_ZONE_VENDOR, ("HCI_VS_InitializeAfterHCIReset\r\n"));
    
          /* Allocate a buffer for the return result.                       */
          if((ReturnBuffer = (Byte_t *)BTPS_AllocateMemory(RETURN_BUFFER_SIZE)) != NULL)
          {
             /* Allocate a temporary buffer to bring the Patch RAM HCI      */
             /* Command Parameters into Data 16 memory.                     */
             if((TempBuf =(Byte_t *) BTPS_AllocateMemory(260)) != NULL)
             {
                /* First download the Base Patch.                           */
                if((ret_val = Download_Patch(BluetoothStackID, BasePatchLength, BasePatchPointer, ReturnBuffer, TempBuf)) == TRUE)
                {
                   /* Next if LE support is enabled go ahead and download   */
                   /* the LE Patch.                                         */ 
    
    #ifdef __SUPPORT_LOW_ENERGY__
    
                   /* Download the LE Patch.                                */
                   ret_val = Download_Patch(BluetoothStackID, LowEnergyPatchLength, LowEnergyPatchPointer, ReturnBuffer, TempBuf);
    
    #else
    
                   ret_val = TRUE;
    
    #endif
    
                }
    
                /* Free the previously allocated tempory buffer.            */
                BTPS_FreeMemory(TempBuf);
             }
             else
                ret_val = FALSE;
    
             BTPS_FreeMemory(ReturnBuffer);
          }
          else
             ret_val = FALSE;
       }
       else
          ret_val = FALSE;
    
       /* Print Success/Failure status.                                     */
       if (ret_val)
          DBG_MSG(DBG_ZONE_VENDOR, ("HCI_VS_InitializeAfterHCIReset Success\r\n"));
       else
          DBG_MSG(DBG_ZONE_VENDOR, ("HCI_VS_InitializeAfterHCIReset Failure.\r\n"));
       
       
       //Para cambair la direccion mac bluetooth <-------------------------
       OGF    = VS_COMMAND_OGF(VS_WRITE_BD_ADDRESS_COMMAND_OPCODE);
       OCF    = VS_COMMAND_OCF(VS_WRITE_BD_ADDRESS_COMMAND_OPCODE);
    
       Length = sizeof(Buffer);
    
       //Chosen Bluetooth Address 
       //conversion mac string en bytes
       BD_Addr[0] = strtol(BD_Address,&pEnd, 16);
       BD_Addr[1] = strtol(pEnd,&pEnd, 16);
       BD_Addr[2] = strtol(pEnd,&pEnd, 16);
       BD_Addr[3] = strtol(pEnd,&pEnd, 16);
       BD_Addr[4] = strtol(pEnd,&pEnd, 16);
       BD_Addr[5] = strtol(pEnd,NULL, 16);
       
    
       ret_val = HCI_Send_Raw_Command(BluetoothStackID, OGF, OCF, sizeof(BD_ADDR_t),
    
                                     (Byte_t *)&BD_Addr, &Status, &Length, Buffer, TRUE);
    
       if((ret_val == 0) && (Status == 0) && (Length==1) && (Buffer[0] == 0))
       {           
        Display(("Successfully changed BD Address\r\n"));         
        ret_val = TRUE; 
       }   
       else   
       {        
        Display(("Failed to change BD Address\r\n"));            
        ret_val = FALSE;     
       }
    
       return(ret_val);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which would is used to implement any needed Bluetooth    */
       /* device vendor specific functionality before the HCI layer is      */
       /* closed.  This function is called at the start of the HCI_Cleanup()*/
       /* function (before the HCI layer is closed), at which time all HCI  */
       /* functions are still operational.  The caller is NOT able to call  */
       /* any other stack functions other than the HCI layer and HCI Driver */
       /* layer functions because the stack is being shutdown (i.e.         */
       /* something has called BSC_Shutdown()).  The caller is free to      */
       /* return either success (TRUE) or failure (FALSE), however, it will */
       /* not circumvent the closing down of the stack or of the HCI layer  */
       /* or HCI Driver (i.e. the stack ignores the return value from this  */
       /* function).                                                        */
       /* * NOTE * At the time this function is called HCI Driver and HCI   */
       /*          layer functions can be called, however no other stack    */
       /*          layer functions are able to be called at this time (hence*/
       /*          the HCI Driver ID and the Bluetooth Stack ID passed to   */
       /*          this function).                                          */
    Boolean_t BTPSAPI HCI_VS_InitializeBeforeHCIClose(unsigned int HCIDriverID, unsigned int BluetoothStackID)
    {
       return(TRUE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to implement any needed Bluetooth device   */
       /* vendor specific functionality after the entire Bluetooth Stack is */
       /* closed.  This function is called during the HCI_Cleanup()         */
       /* function, after the HCI Driver has been closed.  The caller is    */
       /* free return either success (TRUE) or failure (FALSE), however, it */
       /* will not circumvent the closing down of the stack as all layers   */
       /* have already been closed.                                         */
       /* * NOTE * No Stack calls are possible in this function because the */
       /*          entire stack has been closed down at the time this       */
       /*          function is called.                                      */
    Boolean_t BTPSAPI HCI_VS_InitializeAfterHCIClose(void)
    {
       return(TRUE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to enable a specific vendor specific       */
       /* feature.  This can be used to reconfigure the chip for a specific */
       /* feature (i.e. if a special configuration/patch needs to be        */
       /* dynamically loaded it can be done in this function).  This        */
       /* function returns TRUE if the feature was able to be enabled       */
       /* successfully, or FALSE if the feature was unable to be enabled.   */
       /* * NOTE * This functionality is not normally supported by default  */
       /*          (i.e. a custom stack build is required to enable this    */
       /*          functionality).                                          */
    Boolean_t BTPSAPI HCI_VS_EnableFeature(unsigned int BluetoothStackID, unsigned long Feature)
    {
       return(FALSE);
    }
    
       /* The following function prototype represents the vendor specific   */
       /* function which is used to enable a specific vendor specific       */
       /* feature.  This can be used to reconfigure the chip for a specific */
       /* feature (i.e. if a special configuration/patch needs to be        */
       /* dynamically loaded it can be done in this function).  This        */
       /* function returns TRUE if the feature was able to be disabled      */
       /* successfully, or FALSE if the feature was unable to be disabled.  */
       /* * NOTE * This functionality is not normally supported by default  */
       /*          (i.e. a custom stack build is required to enable this    */
       /*          functionality).                                          */
    Boolean_t BTPSAPI HCI_VS_DisableFeature(unsigned int BluetoothStackID, unsigned long Feature)
    {
       return(FALSE);
    }
    
    
    This is what I have in the BTPSVEND.c. I attach the code.

      /* By default we will include the PAN1316 patch (which is the smaller*/

      /* patch version).  This can be used on the CC2560A, CC2564, CC2567  */

      /* and CC2569 TI Chipsets.                                           */

    #ifdef __SUPPORT_PAN1315_PATCH__

      #include "Patch_PAN1315.h"

    #else

      #include "Patch_PAN1316.h"

    #endif

  • Hello again. The bluetooth protocol we are using is the ISPP. I have download the new stack and all the files we need as shown below are there, but not the ISPP.

    $PROJ_DIR$\..\Bluetopia\lib\IAR\libBluetopia.a
    $PROJ_DIR$\..\Bluetopia\lib\IAR\libBluetopia_LE.a
    $PROJ_DIR$\..\Bluetopia\profiles\GATT\lib\server\IAR\libSS1BTGAT.a
    $PROJ_DIR$\..\Bluetopia\profiles\GAPS\lib\IAR\libSS1BTGAP.a
    $PROJ_DIR$\..\Bluetopia\profiles\ISPP\lib\IAR\libSS1BTISP.a

    Does this means that we cannot use the ISPP in the new stack? If we cannot use it we cannot use our ios and android app... so, I hope we will can use it or we will have a very very bad problem with our customer.

    Thanks and best regards
  • Javier Herrero de la Cal said:

    #ifdef __SUPPORT_PAN1315_PATCH__

      #include "Patch_PAN1315.h"

    #else

      #include "Patch_PAN1316.h"

    #endif

    It looks like the stack version used here is pretty old and does not support the CC256xB. You can migrate to the newer stack.

    Javier Herrero de la Cal said:

    Is then anyone there that can make the changes we need for this problem. I mean, we have a firmware that what it makes is sending data by Bluetooth serial port using that Bluetopia stack and now it should be changed to the new bluetooth stack. The engineer that desiged the product is not still working with us, so, maybe for us is better find someone there that maybe can make this for us.

    Please refer to the following list of our 3rd party partners who may be able to help you with the migration.

    Javier Herrero de la Cal said:

    Hello again. The bluetooth protocol we are using is the ISPP. I have download the new stack and all the files we need as shown below are there, but not the ISPP. 

    $PROJ_DIR$\..\Bluetopia\lib\IAR\libBluetopia.a
    $PROJ_DIR$\..\Bluetopia\lib\IAR\libBluetopia_LE.a
    $PROJ_DIR$\..\Bluetopia\profiles\GATT\lib\server\IAR\libSS1BTGAT.a
    $PROJ_DIR$\..\Bluetopia\profiles\GAPS\lib\IAR\libSS1BTGAP.a
    $PROJ_DIR$\..\Bluetopia\profiles\ISPP\lib\IAR\libSS1BTISP.a

    Does this means that we cannot use the ISPP in the new stack? If we cannot use it we cannot use our ios and android app... so, I hope we will can use it or we will have a very very bad problem with our customer.

    The ISPP add-on is delivered saperately due to the MFi licensing requirements. If you have a valid MFi license, you can obtain the ISPP add-on for the CC256XMSPBTBLESW by completing the following request form.

    CC256X-MSP430-ISPP : www.ti.com/.../swlicexportcontrol.tsp

    Once the ISPP add-on is installed on the CC256XMSPBTBLESW installation directory, you will find the relevant ISPP files in place.

    Best regards,

    Vihang

  • Hello,

    Thanks a lot for your information. Yes, we are a MFI developer company and the devices are manufactured by a MFI manufacturer. I have already asked for the ISPP stack. I hope to get it asap.

    So, for my information. It seems then that the unique change we have to do is the following:

    1. Change the old Bluetopia stack by the new bluetopia stack -> Change the Bluetopia folder by the new Bluetopia folder with the ISSP stack also.

    2. Change in my firmware the define SUPPORT_PAN1315_PATCH by SUPPORT_CC256XB_PATCH.

    Any other change you think that we will need? If we just have to change this, I can make it by my own if later using our firmware that we use to send data by ISPP to an IOS and Android tables (MFI) does not work and maybe we need to make more changes in the firmware or you think that just making the changes above it should work again. In that case we can check it on Monday.

    Thanks a lot for your help and best regards,

    Javier

  • Hello. Could you please confirm me if what I wrote last week is ok or we have to make any other change in the firmware.

    Thanks and best regards

  • Confirm what I have written.
  • Javier,

    Javier Herrero de la Cal said:

    So, for my information. It seems then that the unique change we have to do is the following:

    1. Change the old Bluetopia stack by the new bluetopia stack -> Change the Bluetopia folder by the new Bluetopia folder with the ISSP stack also.

    2. Change in my firmware the define SUPPORT_PAN1315_PATCH by SUPPORT_CC256XB_PATCH.

    Any other change you think that we will need? If we just have to change this, I can make it by my own if later using our firmware that we use to send data by ISPP to an IOS and Android tables (MFI) does not work and maybe we need to make more changes in the firmware or you think that just making the changes above it should work again. In that case we can check it on Monday.

    Normally, that is all that you will need to change in order to migrate to a newer stack. Since you are using an older version of the stack (as your base) that we have not migrated before and have an application running on top of the stack, it is not possible to say definitively that this will be the only two changes needed to completely migrate your application from the older version the the new version.

  • Thanks for the answer.

    I am going to make the changes once I will get the ISPP stack and I will tell you if it works ok.

    Best regards

    Javier

  • Hello. We have alrady got all the stack for the CC2560B but we get some errors.

    EHCILL.c and EHCILL.h are not in the new stack. So, we get errors since those files are used for the UART. If I place the old files into the new stack, I get more errors. What have changed?

    SS1BTVS.h is into the stack but I do not knwo why it says that it cannot find it.

    And we get also some errors in the HCITRANS.c file since it has for example some unsigned int paraments and they should be unsigned char...

    Could you plese let me know if we have to change something to do not have these errors.

    Thanks and best regards,

    Javier
  • Javier,

    Seems like the Bluetooth stack version that you had in your project has significant changes compared to the latest stack version. If you are still having problems migrating to the newer version of the stack, please refer to one of our 3rd party partners mentioned in my earlier post.

    Best regards,
    Vihang
  • Thanks. I have already contacted with different companies and if our customer accept one of those quotes, they will make the changes. 

    Thanks a lot for your help. I hope to solve this asap. 

    Best regards

    Javier