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
External wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
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
card10
firmware
Commits
0575f19f
Commit
0575f19f
authored
4 years ago
by
schneider
Browse files
Options
Downloads
Patches
Plain Diff
feat(attc): Parse date/time from central and set RTC / timezone
parent
f6add315
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!406
Read date/time from iOS device
Pipeline
#4740
passed
4 years ago
Stage: build
Stage: test
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
epicardium/ble/meson.build
+1
-0
1 addition, 0 deletions
epicardium/ble/meson.build
epicardium/ble/profiles/tipc_main.c
+203
-0
203 additions, 0 deletions
epicardium/ble/profiles/tipc_main.c
lib/sdk/Libraries/BTLE/meson.build
+1
-1
1 addition, 1 deletion
lib/sdk/Libraries/BTLE/meson.build
with
205 additions
and
1 deletion
epicardium/ble/meson.build
+
1
−
0
View file @
0575f19f
...
...
@@ -3,6 +3,7 @@ ble_sources = files(
'stack.c'
,
'ble_main.c'
,
'ble_attc.c'
,
'profiles/tipc_main.c'
,
'svc_dis.c'
,
'svc_core.c'
,
'bondings.c'
,
...
...
This diff is collapsed.
Click to expand it.
epicardium/ble/profiles/tipc_main.c
0 → 100644
+
203
−
0
View file @
0575f19f
/*************************************************************************************************/
/*!
* \file
*
* \brief Time profile client.
*
* Copyright (c) 2011-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/profiles/tipc/tipc_main.c
*/
/* clang-format off */
/* clang-formet turned off for easier diffing against orginal file */
#include
"wsf_types.h"
#include
"wsf_assert.h"
#include
"wsf_trace.h"
#include
"util/bstream.h"
#include
"app_api.h"
#include
"tipc/tipc_api.h"
#include
"epicardium.h"
#include
<time.h>
#include
<stdio.h>
/**************************************************************************************************
Local Variables
**************************************************************************************************/
static
time_t
s_time
;
/*!
* Current Time service
*/
/* Characteristics for discovery */
/*! Current time */
static
const
attcDiscChar_t
tipcCtsCt
=
{
attCtChUuid
,
ATTC_SET_REQUIRED
};
/*! Current time client characteristic configuration descriptor */
static
const
attcDiscChar_t
tipcCtsCtCcc
=
{
attCliChCfgUuid
,
ATTC_SET_REQUIRED
|
ATTC_SET_DESCRIPTOR
};
/*! Local time information */
static
const
attcDiscChar_t
tipcCtsLti
=
{
attLtiChUuid
,
0
};
/*! Reference time information */
static
const
attcDiscChar_t
tipcCtsRti
=
{
attRtiChUuid
,
0
};
/*! List of characteristics to be discovered; order matches handle index enumeration */
static
const
attcDiscChar_t
*
tipcCtsDiscCharList
[]
=
{
&
tipcCtsCt
,
/* Current time */
&
tipcCtsCtCcc
,
/* Current time client characteristic configuration descriptor */
&
tipcCtsLti
,
/* Local time information */
&
tipcCtsRti
/* Reference time information */
};
/* sanity check: make sure handle list length matches characteristic list length */
WSF_CT_ASSERT
(
TIPC_CTS_HDL_LIST_LEN
==
((
sizeof
(
tipcCtsDiscCharList
)
/
sizeof
(
attcDiscChar_t
*
))));
/*************************************************************************************************/
/*!
* \brief Perform service and characteristic discovery for Current Time service. Parameter
* pHdlList must point to an array of length TIPC_CTS_HDL_LIST_LEN. If discovery is
* successful the handles of discovered characteristics and descriptors will be set
* in pHdlList.
*
* \param connId Connection identifier.
* \param pHdlList Characteristic handle list.
*
* \return None.
*/
/*************************************************************************************************/
void
TipcCtsDiscover
(
dmConnId_t
connId
,
uint16_t
*
pHdlList
)
{
AppDiscFindService
(
connId
,
ATT_16_UUID_LEN
,
(
uint8_t
*
)
attCtsSvcUuid
,
TIPC_CTS_HDL_LIST_LEN
,
(
attcDiscChar_t
**
)
tipcCtsDiscCharList
,
pHdlList
);
}
/*************************************************************************************************/
/*!
* \brief Process a value received in an ATT read response, notification, or indication
* message. Parameter pHdlList must point to an array of length TIPC_CTS_HDL_LIST_LEN.
* If the attribute handle of the message matches a handle in the handle list the value
* is processed, otherwise it is ignored.
*
* \param pHdlList Characteristic handle list.
* \param pMsg ATT callback message.
*
* \return ATT_SUCCESS if handle is found, ATT_ERR_NOT_FOUND otherwise.
*/
/*************************************************************************************************/
uint8_t
TipcCtsValueUpdate
(
uint16_t
*
pHdlList
,
attEvt_t
*
pMsg
)
{
uint8_t
status
=
ATT_SUCCESS
;
uint8_t
*
p
;
uint16_t
year
;
uint8_t
month
,
day
,
hour
,
min
,
sec
,
dayOfWeek
,
adjustReason
;
uint8_t
sec256
=
0
;
int8_t
timeZone
;
uint8_t
dstOffset
,
source
,
accuracy
;
/* Suppress unused variable compile warning */
(
void
)
month
;
(
void
)
day
;
(
void
)
hour
;
(
void
)
min
;
(
void
)
sec
;
(
void
)
dayOfWeek
;
(
void
)
adjustReason
;
(
void
)
year
;
(
void
)
sec256
;
(
void
)
dstOffset
;
(
void
)
accuracy
;
(
void
)
timeZone
;
(
void
)
source
;
/* current time */
if
(
pMsg
->
handle
==
pHdlList
[
TIPC_CTS_CT_HDL_IDX
])
{
/* parse value */
p
=
pMsg
->
pValue
;
BSTREAM_TO_UINT16
(
year
,
p
);
BSTREAM_TO_UINT8
(
month
,
p
);
BSTREAM_TO_UINT8
(
day
,
p
);
BSTREAM_TO_UINT8
(
hour
,
p
);
BSTREAM_TO_UINT8
(
min
,
p
);
BSTREAM_TO_UINT8
(
sec
,
p
);
BSTREAM_TO_UINT8
(
dayOfWeek
,
p
);
BSTREAM_TO_UINT8
(
sec256
,
p
);
BSTREAM_TO_UINT8
(
adjustReason
,
p
);
struct
tm
t
;
t
.
tm_year
=
year
-
1900
;
t
.
tm_mon
=
month
-
1
;
t
.
tm_mday
=
day
;
t
.
tm_hour
=
hour
;
t
.
tm_min
=
min
;
t
.
tm_sec
=
sec
;
t
.
tm_isdst
=
-
1
;
/* unknown */
s_time
=
mktime
(
&
t
);
APP_TRACE_INFO3
(
"Date: %d/%d/%d"
,
month
,
day
,
year
);
APP_TRACE_INFO3
(
"Time: %02d:%02d:%02d"
,
hour
,
min
,
sec
);
APP_TRACE_INFO3
(
"dayOfWeek:%d sec256:%d adjustReason:%d"
,
dayOfWeek
,
sec256
,
adjustReason
);
}
/* local time information */
else
if
(
pMsg
->
handle
==
pHdlList
[
TIPC_CTS_LTI_HDL_IDX
])
{
/* parse value */
p
=
pMsg
->
pValue
;
BSTREAM_TO_UINT8
(
timeZone
,
p
);
BSTREAM_TO_UINT8
(
dstOffset
,
p
);
APP_TRACE_INFO2
(
"timeZone:%d dstOffset:%d"
,
timeZone
,
dstOffset
);
if
(
s_time
)
{
char
buf
[
32
];
snprintf
(
buf
,
sizeof
(
buf
),
"%+05d"
,
(
timeZone
+
dstOffset
)
/
4
*
100
);
epic_config_set_string
(
"timezone"
,
buf
);
epic_rtc_set_milliseconds
(
s_time
*
1000
+
(
1000
*
sec256
)
/
256
-
(
timeZone
+
dstOffset
)
*
15
*
60
*
1000
);
}
}
/* reference time information */
else
if
(
pMsg
->
handle
==
pHdlList
[
TIPC_CTS_RTI_HDL_IDX
])
{
/* parse value */
p
=
pMsg
->
pValue
;
BSTREAM_TO_UINT8
(
source
,
p
);
BSTREAM_TO_UINT8
(
accuracy
,
p
);
BSTREAM_TO_UINT8
(
day
,
p
);
BSTREAM_TO_UINT8
(
hour
,
p
);
APP_TRACE_INFO2
(
"Ref. time source:%d accuracy:%d"
,
source
,
accuracy
);
APP_TRACE_INFO2
(
"Last update days:%d hours:%d"
,
day
,
hour
);
}
/* handle not found in list */
else
{
status
=
ATT_ERR_NOT_FOUND
;
}
return
status
;
}
/* clang-format on */
This diff is collapsed.
Click to expand it.
lib/sdk/Libraries/BTLE/meson.build
+
1
−
1
View file @
0575f19f
...
...
@@ -98,7 +98,7 @@ sources = files(
'stack/ble-profiles/sources/profiles/plxps/plxps_db.c'
,
'stack/ble-profiles/sources/profiles/plxps/plxps_main.c'
,
'stack/ble-profiles/sources/profiles/dis/dis_main.c'
,
'stack/ble-profiles/sources/profiles/tipc/tipc_main.c'
,
#
'stack/ble-profiles/sources/profiles/tipc/tipc_main.c',
'stack/ble-profiles/sources/profiles/bas/bas_main.c'
,
'stack/ble-profiles/sources/profiles/udsc/udsc_main.c'
,
'stack/ble-profiles/sources/profiles/scpps/scpps_main.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