Example #1
0
/*********************************************************************
 * @fn      oadManagerCharDiscovery
 *
 * @brief   OAD Characteristics service discovery.
 *
 * @return  none
 */
static void oadManagerCharDiscovery(void)
{
  attReadByTypeReq_t req;

  req.startHandle = oadSvcStartHdl;
  req.endHandle = oadSvcEndHdl;
  req.type.len = ATT_UUID_SIZE;

  if ( oadManagerDiscIdx == 0 )
  {
    uint8 oadCharUUID[ATT_UUID_SIZE] = { TI_BASE_UUID_128( OAD_IMG_IDENTIFY_UUID ) };

    (void)osal_memcpy(req.type.uuid, oadCharUUID, ATT_UUID_SIZE);
  }
  else
  {
    uint8 oadCharUUID[ATT_UUID_SIZE] = { TI_BASE_UUID_128( OAD_IMG_BLOCK_UUID ) };

    (void)osal_memcpy(req.type.uuid, oadCharUUID, ATT_UUID_SIZE);
  }

  if (GATT_DiscCharsByUUID(oadManagerConnHandle, &req, oadManagerTaskId) != SUCCESS)
  {
    (void)osal_set_event(oadManagerTaskId, CHAR_DISCOVERY_EVT);
  }
}
Example #2
0
/*********************************************************************
 * @fn      oadManagerSvcDiscovery
 *
 * @brief   OAD Service discovery.
 *
 * @return  none
 */
static void oadManagerSvcDiscovery(void)
{
  uint8 oadServUUID[ATT_UUID_SIZE] = { TI_BASE_UUID_128( OAD_SERVICE_UUID ) };

  // Initialize service discovery variables
  oadSvcStartHdl = oadSvcEndHdl = 0;

  if (GATT_DiscPrimaryServiceByUUID(oadManagerConnHandle, oadServUUID,
                                    ATT_UUID_SIZE, oadManagerTaskId) != SUCCESS)
  {
    (void)osal_set_event(oadManagerTaskId, SVC_DISCOVERY_EVT);
  }
}
Example #3
0
/*********************************************************************
 * @fn      oadManagerFindServUUID
 *
 * @brief   Find the OAD Service UUID in an advertiser's service UUID list.
 *
 * @return  TRUE if service UUID found
 */
static bool oadManagerFindServUUID( uint8 *pData, uint8 dataLen )
{
  uint8 adLen;
  uint8 adType;
  uint8 *pEnd;

  pEnd = pData + dataLen - 1;

  // While end of data not reached
  while ( pData < pEnd )
  {
    // Get length of next AD item
    adLen = *pData++;
    if ( adLen > 0 )
    {
      adType = *pData;

      if ( adType == GAP_ADTYPE_128BIT_MORE || adType == GAP_ADTYPE_128BIT_COMPLETE )
      {
        pData++;
        adLen--;

        while ((adLen >= ATT_UUID_SIZE) && (pData < pEnd))     // For each UUID in list.
        {
          uint8 oadServUUID[ATT_UUID_SIZE] = { TI_BASE_UUID_128( OAD_SERVICE_UUID ) };

          if (osal_memcmp(pData, oadServUUID, ATT_UUID_SIZE))  // Check for match.
          {
            return TRUE;  // Match found
          }

          // Go to next
          pData += ATT_UUID_SIZE;
          adLen -= ATT_UUID_SIZE;
        }

        // Handle possible erroneous extra byte in UUID list
        if ( adLen == 1 )
        {
          pData++;
        }
      }
      else  // Go to next item
      {
        pData += adLen;
      }
    }
  }

  return FALSE;  // Match not found
}
Example #4
0
/*********************************************************************
 * CONSTANTS
 */

/*********************************************************************
 * TYPEDEFS
 */

/*********************************************************************
 * GLOBAL VARIABLES
 */
// OAD Reset GATT Profile Service UUID
static const uint8_t resetServUUID[ATT_UUID_SIZE] =
{
    TI_BASE_UUID_128(OAD_RESET_SERVICE_UUID)
};

static const uint8_t resetCharUUID[ATT_UUID_SIZE] =
{
    TI_BASE_UUID_128(OAD_RESET_CHAR_UUID)
};

/*********************************************************************
 * EXTERNAL VARIABLES
 */

/*********************************************************************
 * EXTERNAL FUNCTIONS
 */
#if !defined (OAD_IMAGE_A_USER_ID)
  #define OAD_IMAGE_A_USER_ID  {'E', 'E', 'E', 'E'}
#endif

/*********************************************************************
 * MACROS
 */

/*********************************************************************
 * GLOBAL VARIABLES
 */

// OAD Service UUID
static CONST uint8_t oadServUUID[ATT_UUID_SIZE] =
{
  TI_BASE_UUID_128(OAD_SERVICE_UUID)
};

static CONST uint8_t oadCharUUID[OAD_CHAR_CNT][ATT_UUID_SIZE] =
{
 // OAD Image Identify UUID
 TI_BASE_UUID_128(OAD_IMG_IDENTIFY_UUID),

 // OAD Image Block Request/Response UUID
 TI_BASE_UUID_128(OAD_IMG_BLOCK_UUID)
};

/*********************************************************************
 * Profile Attributes - variables
 */
/*********************************************************************
 * CONSTANTS
 */

/*********************************************************************
 * TYPEDEFS
 */

/*********************************************************************
 * GLOBAL VARIABLES
 */
// audio GATT Profile Service UUID: 0xB000
static CONST uint8 audioProfileServUUID[ATT_UUID_SIZE] =
{
  TI_BASE_UUID_128(AUDIO_SERV_UUID)
};

// Start/Stop Characteristic UUID: 0xB001
static CONST uint8 audioProfileStartUUID[ATT_UUID_SIZE] =
{
  TI_BASE_UUID_128(AUDIOPROFILE_START_UUID)
};

// Audio Stream Characteristic UUID: 0xB002
static CONST uint8 audioProfileAudioUUID[ATT_UUID_SIZE] =
{
  TI_BASE_UUID_128(AUDIOPROFILE_AUDIO_UUID)
};