// public List<double> data; public static SportsDataRow loadFromBuffer(byte[] buf) { SportsDataRow row = new SportsDataRow(); row.data = new Dictionary <DataType, double>(); int cursor = 0; int grid_num = ((int)buf[cursor]) & 0x000000ff; cursor++; // + ET 041514 : Commented because it limit the showing of values //if (grid_num > 5) //return null; int data_start_offset = cursor + grid_num; for (int i = 0; i < grid_num - 1; ++i) { //get the value int key = ((int)buf[cursor]) & 0x000000ff; int intvalue = Protocol.bytesToInt(buf, data_start_offset + i * 4); cursor++; switch (key) { case (int)DataType.DATA_WORKOUT: row.seconds_elapse = intvalue; break; case (int)DataType.DATA_SPEED: case (int)DataType.DATA_SPEED_AVG: case (int)DataType.DATA_SPEED_TOP: double speedValue = (double)intvalue * 36 / 1000; // row.data.Insert(key, Math.Round(speedValue * 100.0) / 100.0); row.data.Add((DataType)key, Math.Round(speedValue * 100.0) / 100.0); break; case (int)DataType.DATA_DISTANCE: // row.data.Insert(key, (double)(intvalue) / 10); row.data.Add((DataType)key, (double)(intvalue) / 10); break; default: // row.data.Insert(key, (double)(intvalue)); row.data.Add((DataType)key, (double)(intvalue)); break; } } return(row); }
// public List<double> data; public static SportsDataRow loadFromBuffer(byte[] buf) { SportsDataRow row = new SportsDataRow(); row.data = new Dictionary<DataType, double>(); int cursor = 0; int grid_num = ((int)buf[cursor]) & 0x000000ff; cursor++; // + ET 041514 : Commented because it limit the showing of values //if (grid_num > 5) //return null; int data_start_offset = cursor + grid_num; for (int i = 0; i < grid_num - 1; ++i) { //get the value int key = ((int)buf[cursor]) & 0x000000ff; int intvalue = Protocol.bytesToInt(buf, data_start_offset + i * 4); cursor++; switch (key) { case (int)DataType.DATA_WORKOUT: row.seconds_elapse = intvalue; break; case (int)DataType.DATA_SPEED: case (int)DataType.DATA_SPEED_AVG: case (int)DataType.DATA_SPEED_TOP: double speedValue = (double)intvalue * 36 / 1000; // row.data.Insert(key, Math.Round(speedValue * 100.0) / 100.0); row.data.Add((DataType)key, Math.Round(speedValue * 100.0) / 100.0); break; case (int)DataType.DATA_DISTANCE: // row.data.Insert(key, (double)(intvalue) / 10); row.data.Add((DataType)key, (double)(intvalue)/ 10); break; default: // row.data.Insert(key, (double)(intvalue)); row.data.Add((DataType)key, (double)(intvalue)); break; } } return row; }
private void OnSportsDataReceived(SportsDataRow sport) { KreyosUtils.Log("BluetoothManager::OnSportsDataReceived", ""); //* Logs KreyosUtils.Log("Mode:", "" + sport.sports_mode); KreyosUtils.Log("Time:", "" + sport.seconds_elapse); foreach (KeyValuePair<SportsDataRow.DataType, double> pair in sport.data) { KreyosUtils.Log("Data", "" + pair.Key + ":" + pair.Value); } //*/ ObserverInfo info = new ObserverInfo(); info.Command = EBTEvent.BTE_OnStartSportsMode; info.SportsData = sport; BluetoothObserver.Instance.Trigger(EBTEvent.BTE_OnStartSportsMode, info); }