1#! /usr/bin/env bash
2# Copyright 2018 Oticon A/S
3# SPDX-License-Identifier: Apache-2.0
4
5# Script to convert the BabbleSim 2G4 phy dumps into the format the ellisys can
6# import (v1.1), supporting 2Mbps BLE
7#
8# Run for example as:
9#./convert_results_to_ellisysv2.sh ../../results/Hola/d_*.Tx.csv > ~/c_drive/Users/alpi/LocalDocs/trial.bttrp
10
11Input_files="$@"
12TMP_FILE=$(mktemp)
13
14echo -n "" > $TMP_FILE
15for file in $Input_files
16do
17  tail -n+2 $file >> $TMP_FILE
18  echo -e "\n" >> $TMP_FILE
19done
20
21echo -e "FileFormat:Bluetooth\n\
22                version=1.0\n\
23\n\
24ItemFormat:LE version=1.1"
25
26awk '
27function rfchannel(freq) { return (freq-2)/2; }
28function rtrim(s)        { sub(/[ \t\r\n]+$/, "", s); return s; }
29
30BEGIN{
31FS=",";
32}
33{
34Packet=$10;
35if ((NF != 10) || (length(Packet) == 0)) { next } # Corrupted line
36
37Mod=$5;
38Packet_size=$9;
39
40if ((Mod == 80) && (Packet_size > 4)) { # BLE Coded Phy - FEC2 part
41  if (CI=="00") {
42     CR=8;
43  } else {
44     CR=2;
45  }
46  printf("%.0f aa=%s rssi=%i rfchannel=%i phy=Coded coding=Coded%i rawdata=\"%s\"\n", TI, AA, RSSI, RF_CHANNEL, CR, rtrim(Packet));
47  next
48}
49TI = $1 * 1000;
50RF_CHANNEL=rfchannel($3);
51AA=$4;
52RSSI=-40;
53if (length(Packet) >= 2) {
54  CI=substr(Packet, 1, 2);
55}
56if (Mod == 16){
57printf("%.0f aa=%s rssi=%i rfchannel=%i phy=1Mbps rawdata=\"%s\"\n",TI,AA,RSSI, RF_CHANNEL, rtrim(Packet));
58}
59if (Mod == 32 || Mod == 33){
60printf("%.0f aa=%s rssi=%i rfchannel=%i phy=2Mbps rawdata=\"%s\"\n",TI,AA,RSSI, RF_CHANNEL, rtrim(Packet));
61}
62}' $TMP_FILE | sort -g | awk '{print "Item time="$0}'
63
64
65
66#Examples of the importable format:
67#v1.0:
68#Item time=522186250 aa=0x8E89BED6 rssi=-58 rfchannel=12 rawdata="40 1E 60 B6 6E 2D A3 4A 02 01 06 02 0A 00 11 06 92 15 37 84 E8 CC 2C 86 31 44 4A C7 BD F4 74 7D 9E CD 7E"
69#v1.1:
70#Item time=15102072375 aa=0x1848870A rssi=-23 rfchannel=35 phy=1Mbps rawdata="09 00 38 A4 5B"
71#Item time=15351840875 aa=0x1848870A rssi=-37.5 rfchannel=3 phy=2Mbps rawdata="01 00 9E A9 5B"
72
73rm $TMP_FILE
74