Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
F
firmware
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
External wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
swym
firmware
Commits
9eead8a4
Verified
Commit
9eead8a4
authored
5 years ago
by
schneider
Committed by
rahix
5 years ago
Browse files
Options
Downloads
Patches
Plain Diff
chore(ble): Copy svc_core.c from the stack
parent
99a5d4a7
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
epicardium/ble/meson.build
+2
-1
2 additions, 1 deletion
epicardium/ble/meson.build
epicardium/ble/svc_core.c
+334
-0
334 additions, 0 deletions
epicardium/ble/svc_core.c
lib/sdk/Libraries/BTLE/meson.build
+1
-1
1 addition, 1 deletion
lib/sdk/Libraries/BTLE/meson.build
with
337 additions
and
2 deletions
epicardium/ble/meson.build
+
2
−
1
View file @
9eead8a4
...
...
@@ -2,5 +2,6 @@ ble_sources = files(
'ble.c'
,
'stack.c'
,
'ble_main.c'
,
'svc_dis.c'
'svc_dis.c'
,
'svc_core.c'
)
This diff is collapsed.
Click to expand it.
epicardium/ble/svc_core.c
0 → 100644
+
334
−
0
View file @
9eead8a4
/*************************************************************************************************/
/*!
* \file
*
* \brief Example GATT and GAP service implementations.
*
* Copyright (c) 2009-2018 Arm Ltd. All Rights Reserved.
* ARM Ltd. confidential and proprietary.
*
* IMPORTANT. Your use of this file is governed by a Software License Agreement
* ("Agreement") that must be accepted in order to download or otherwise receive a
* copy of this file. You may not use or copy this file for any purpose other than
* as described in the Agreement. If you do not agree to all of the terms of the
* Agreement do not use this file and delete all copies in your possession or control;
* if you do not have a copy of the Agreement, you must contact ARM Ltd. prior
* to any use, copying or further distribution of this software.
*/
/*************************************************************************************************/
/* card10:
* copied from lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/services/svc_core.c
*/
#include
"wsf_types.h"
#include
"att_api.h"
#include
"att_uuid.h"
#include
"util/bstream.h"
#include
"svc_core.h"
#include
"svc_ch.h"
#include
"svc_cfg.h"
/**************************************************************************************************
Macros
**************************************************************************************************/
/*! Characteristic read permissions */
#ifndef CORE_SEC_PERMIT_READ
#define CORE_SEC_PERMIT_READ SVC_SEC_PERMIT_READ
#endif
/*! Characteristic write permissions */
#ifndef CORE_SEC_PERMIT_WRITE
#define CORE_SEC_PERMIT_WRITE SVC_SEC_PERMIT_WRITE
#endif
/*! Default device name */
#define CORE_DEFAULT_DEV_NAME "card10"
/*! Length of default device name */
#define CORE_DEFAULT_DEV_NAME_LEN 6
/**************************************************************************************************
GAP group
**************************************************************************************************/
/* service */
static
const
uint8_t
gapValSvc
[]
=
{
UINT16_TO_BYTES
(
ATT_UUID_GAP_SERVICE
)};
static
const
uint16_t
gapLenSvc
=
sizeof
(
gapValSvc
);
/* device name characteristic */
static
const
uint8_t
gapValDnCh
[]
=
{
ATT_PROP_READ
,
UINT16_TO_BYTES
(
GAP_DN_HDL
),
UINT16_TO_BYTES
(
ATT_UUID_DEVICE_NAME
)};
static
const
uint16_t
gapLenDnCh
=
sizeof
(
gapValDnCh
);
/* device name */
static
uint8_t
gapValDn
[
ATT_DEFAULT_PAYLOAD_LEN
]
=
CORE_DEFAULT_DEV_NAME
;
static
uint16_t
gapLenDn
=
CORE_DEFAULT_DEV_NAME_LEN
;
/* appearance characteristic */
static
const
uint8_t
gapValApCh
[]
=
{
ATT_PROP_READ
,
UINT16_TO_BYTES
(
GAP_AP_HDL
),
UINT16_TO_BYTES
(
ATT_UUID_APPEARANCE
)};
static
const
uint16_t
gapLenApCh
=
sizeof
(
gapValApCh
);
/* appearance */
static
uint8_t
gapValAp
[]
=
{
UINT16_TO_BYTES
(
CH_APPEAR_UNKNOWN
)};
static
const
uint16_t
gapLenAp
=
sizeof
(
gapValAp
);
/* central address resolution characteristic */
static
const
uint8_t
gapValCarCh
[]
=
{
ATT_PROP_READ
,
UINT16_TO_BYTES
(
GAP_CAR_HDL
),
UINT16_TO_BYTES
(
ATT_UUID_CAR
)};
static
const
uint16_t
gapLenCarCh
=
sizeof
(
gapValCarCh
);
/* central address resolution */
static
uint8_t
gapValCar
[]
=
{
FALSE
};
static
const
uint16_t
gapLenCar
=
sizeof
(
gapValCar
);
/* resolvable private address only characteristic */
static
const
uint8_t
gapValRpaoCh
[]
=
{
ATT_PROP_READ
,
UINT16_TO_BYTES
(
GAP_RPAO_HDL
),
UINT16_TO_BYTES
(
ATT_UUID_RPAO
)};
static
const
uint16_t
gapLenRpaoCh
=
sizeof
(
gapValRpaoCh
);
/* resolvable private address only */
static
uint8_t
gapValRpao
[]
=
{
0
};
static
const
uint16_t
gapLenRpao
=
sizeof
(
gapValRpao
);
/* Attribute list for GAP group */
static
const
attsAttr_t
gapList
[]
=
{
{
attPrimSvcUuid
,
(
uint8_t
*
)
gapValSvc
,
(
uint16_t
*
)
&
gapLenSvc
,
sizeof
(
gapValSvc
),
0
,
ATTS_PERMIT_READ
},
{
attChUuid
,
(
uint8_t
*
)
gapValDnCh
,
(
uint16_t
*
)
&
gapLenDnCh
,
sizeof
(
gapValDnCh
),
0
,
ATTS_PERMIT_READ
},
{
attDnChUuid
,
gapValDn
,
&
gapLenDn
,
sizeof
(
gapValDn
),
(
ATTS_SET_VARIABLE_LEN
|
ATTS_SET_WRITE_CBACK
),
(
ATTS_PERMIT_READ
|
CORE_SEC_PERMIT_WRITE
)
},
{
attChUuid
,
(
uint8_t
*
)
gapValApCh
,
(
uint16_t
*
)
&
gapLenApCh
,
sizeof
(
gapValApCh
),
0
,
ATTS_PERMIT_READ
},
{
attApChUuid
,
gapValAp
,
(
uint16_t
*
)
&
gapLenAp
,
sizeof
(
gapValAp
),
0
,
ATTS_PERMIT_READ
},
{
attChUuid
,
(
uint8_t
*
)
gapValCarCh
,
(
uint16_t
*
)
&
gapLenCarCh
,
sizeof
(
gapValCarCh
),
0
,
ATTS_PERMIT_READ
},
{
attCarChUuid
,
gapValCar
,
(
uint16_t
*
)
&
gapLenCar
,
sizeof
(
gapValCar
),
0
,
ATTS_PERMIT_READ
},
{
attChUuid
,
(
uint8_t
*
)
gapValRpaoCh
,
(
uint16_t
*
)
&
gapLenRpaoCh
,
sizeof
(
gapValRpaoCh
),
0
,
ATTS_PERMIT_READ
},
{
attRpaoChUuid
,
gapValRpao
,
(
uint16_t
*
)
&
gapLenRpao
,
sizeof
(
gapValRpao
),
0
,
ATTS_PERMIT_READ
}
};
/* GAP group structure */
static
attsGroup_t
svcGapGroup
=
{
NULL
,
(
attsAttr_t
*
)
gapList
,
NULL
,
NULL
,
GAP_START_HDL
,
GAP_END_HDL
};
/**************************************************************************************************
GATT group
**************************************************************************************************/
/* service */
static
const
uint8_t
gattValSvc
[]
=
{
UINT16_TO_BYTES
(
ATT_UUID_GATT_SERVICE
)};
static
const
uint16_t
gattLenSvc
=
sizeof
(
gattValSvc
);
/* service changed characteristic */
static
const
uint8_t
gattValScCh
[]
=
{
ATT_PROP_INDICATE
,
UINT16_TO_BYTES
(
GATT_SC_HDL
),
UINT16_TO_BYTES
(
ATT_UUID_SERVICE_CHANGED
)};
static
const
uint16_t
gattLenScCh
=
sizeof
(
gattValScCh
);
/* service changed */
static
const
uint8_t
gattValSc
[]
=
{
UINT16_TO_BYTES
(
0x0001
),
UINT16_TO_BYTES
(
0xFFFF
)};
static
const
uint16_t
gattLenSc
=
sizeof
(
gattValSc
);
/* service changed client characteristic configuration */
static
uint8_t
gattValScChCcc
[]
=
{
UINT16_TO_BYTES
(
0x0000
)};
static
const
uint16_t
gattLenScChCcc
=
sizeof
(
gattValScChCcc
);
/* Attribute list for GATT group */
static
const
attsAttr_t
gattList
[]
=
{
{
attPrimSvcUuid
,
(
uint8_t
*
)
gattValSvc
,
(
uint16_t
*
)
&
gattLenSvc
,
sizeof
(
gattValSvc
),
0
,
ATTS_PERMIT_READ
},
{
attChUuid
,
(
uint8_t
*
)
gattValScCh
,
(
uint16_t
*
)
&
gattLenScCh
,
sizeof
(
gattValScCh
),
0
,
ATTS_PERMIT_READ
},
{
attScChUuid
,
(
uint8_t
*
)
gattValSc
,
(
uint16_t
*
)
&
gattLenSc
,
sizeof
(
gattValSc
),
0
,
0
},
{
attCliChCfgUuid
,
gattValScChCcc
,
(
uint16_t
*
)
&
gattLenScChCcc
,
sizeof
(
gattValScChCcc
),
ATTS_SET_CCC
,
(
ATTS_PERMIT_READ
|
CORE_SEC_PERMIT_WRITE
)
},
};
/* GATT group structure */
static
attsGroup_t
svcGattGroup
=
{
NULL
,
(
attsAttr_t
*
)
gattList
,
NULL
,
NULL
,
GATT_START_HDL
,
GATT_END_HDL
};
/*************************************************************************************************/
/*!
* \brief Add the services to the attribute server.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreAddGroup
(
void
)
{
AttsAddGroup
(
&
svcGapGroup
);
AttsAddGroup
(
&
svcGattGroup
);
}
/*************************************************************************************************/
/*!
* \brief Remove the services from the attribute server.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreRemoveGroup
(
void
)
{
AttsRemoveGroup
(
GAP_START_HDL
);
AttsRemoveGroup
(
GATT_START_HDL
);
}
/*************************************************************************************************/
/*!
* \brief Register callbacks for the service.
*
* \param readCback Read callback function.
* \param writeCback Write callback function.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreGapCbackRegister
(
attsReadCback_t
readCback
,
attsWriteCback_t
writeCback
)
{
svcGapGroup
.
readCback
=
readCback
;
svcGapGroup
.
writeCback
=
writeCback
;
}
/*************************************************************************************************/
/*!
* \brief Register callbacks for the service.
*
* \param readCback Read callback function.
* \param writeCback Write callback function.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreGattCbackRegister
(
attsReadCback_t
readCback
,
attsWriteCback_t
writeCback
)
{
svcGattGroup
.
readCback
=
readCback
;
svcGattGroup
.
writeCback
=
writeCback
;
}
/*************************************************************************************************/
/*!
* \brief Update the central address resolution attribute value.
*
* \param value New value.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreGapCentAddrResUpdate
(
bool_t
value
)
{
gapValCar
[
0
]
=
value
;
}
/*************************************************************************************************/
/*!
* \brief Add the Resolvable Private Address Only (RPAO) characteristic to the GAP service.
* The RPAO characteristic should be added only when DM Privacy is enabled.
*
* \return None.
*/
/*************************************************************************************************/
void
SvcCoreGapAddRpaoCh
(
void
)
{
/* if RPAO characteristic not already in GAP service */
if
(
svcGapGroup
.
endHandle
<
GAP_RPAO_HDL
)
{
svcGapGroup
.
endHandle
=
GAP_RPAO_HDL
;
}
}
This diff is collapsed.
Click to expand it.
lib/sdk/Libraries/BTLE/meson.build
+
1
−
1
View file @
9eead8a4
...
...
@@ -116,7 +116,7 @@ sources = files(
'stack/ble-profiles/sources/services/svc_rscs.c'
,
'stack/ble-profiles/sources/services/svc_hts.c'
,
'stack/ble-profiles/sources/services/svc_temp.c'
,
'stack/ble-profiles/sources/services/svc_core.c'
,
#
'stack/ble-profiles/sources/services/svc_core.c',
'stack/ble-profiles/sources/services/svc_hid.c'
,
'stack/ble-profiles/sources/services/svc_scpss.c'
,
'stack/ble-profiles/sources/services/svc_hrs.c'
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment