-
Notifications
You must be signed in to change notification settings - Fork 0
/
nrfconnect.js
70 lines (65 loc) · 2.79 KB
/
nrfconnect.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// convert time string from nrfconnect log to milliseconds
function convert_nrfconnect_time(time_str) {
// time string is hh:mm:ss.ms
let ret = 0;
let parsed = time_str.match(/([0-9]+):([0-9]+):([0-9]+)\.([0-9]+)/)
ret = parseInt(parsed[3]) + parseInt(parsed[2]) * 60 + parseInt(parsed[1]) * (60 * 60)
ret = ret * 1000
ret = ret + parseInt(parsed[4])
return ret;
}
function android_convert_nrfconnect_frame(frame_str) {
let ret = [];
frame_str.match(/[0-9A-F]{2}/g).forEach(dd => {
ret.push(parseInt(dd, 16));
});
return new Uint8Array(ret);
}
function android_extract_frame_data(log_line) {
let parsed = log_line.match(/I\s+([0-9]+:[0-9]+:[0-9]+\.[0-9]+).* value: \(0x\) (.*)/);
return {'time_str': parsed[1], 'frame_str': parsed[2]};
}
function ios_convert_nrfconnect_frame(frame_str) {
let ret = [];
frame_str.match(/[0-9A-F]{2}/g).forEach(dd => {
ret.push(parseInt(dd, 16));
});
return new Uint8Array(ret);
}
function ios_extract_frame_data(log_line) {
let parsed = log_line.match(/([0-9]+:[0-9]+:[0-9]+\.[0-9]+) 0x([0-9A-F]+) received/);
return {'time_str': parsed[1], 'frame_str': parsed[2]};
}
function convert_nrfconnect_log(full_log) {
// filter line only containing notification received
let ret = [];
let notification_logs = full_log.match(/.*Notification received.*/g);
if ((null != notification_logs) && (notification_logs.length != 0)) {
let start = android_extract_frame_data(notification_logs[0]);
let start_time = convert_nrfconnect_time(start.time_str);
console.log("Android Start time: " + start_time);
notification_logs.forEach(ll => {
let frame = android_extract_frame_data(ll);
let received_time = convert_nrfconnect_time(frame.time_str) - start_time;
let values = android_convert_nrfconnect_frame(frame.frame_str).buffer;
let atime = extractTimeFromFrame(values);
ret.push({'received_time': received_time, 'time': atime, 'data': values});
});
return ret;
}
notification_logs = full_log.match(/.* 0x[0-9A-F]{46,} received/g);
if (notification_logs.length != 0) {
let start = ios_extract_frame_data(notification_logs[0]);
let start_time = convert_nrfconnect_time(start.time_str);
console.log("iOs Start time:" + start_time);
notification_logs.forEach(ll => {
let frame = ios_extract_frame_data(ll);
let received_time = convert_nrfconnect_time(frame.time_str) - start_time;
let values = ios_convert_nrfconnect_frame(frame.frame_str).buffer;
let atime = extractTimeFromFrame(values);
ret.push({'received_time': received_time, 'time': atime, 'data': values});
});
return ret;
}
return ret;
}