Try to reproduce (PIByteArray << CAN_Raw) operator bug
This commit is contained in:
35
experiments/sm/template_specialization.cpp
Normal file
35
experiments/sm/template_specialization.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// Created by Stepan on 16.10.2020.
|
||||
//
|
||||
|
||||
#include "../../can/can_data.h"
|
||||
#include <sm_base.h>
|
||||
|
||||
REGISTER_BUS_TYPE(CAN_Raw)
|
||||
|
||||
PICout operator <<(PICout s, const CAN_Raw & v) {
|
||||
s.saveControl();
|
||||
s.setControl(0);
|
||||
s << "{id=0x" << PIString::fromNumber(v.Id, 16) << ", size=" << v.Size << ", data=" << PIByteArray(v.Data, v.Size);
|
||||
s.restoreControl();
|
||||
return s;
|
||||
}
|
||||
|
||||
int main() {
|
||||
CAN_Raw msg = { .Id = 0x22, .Size = 8, .Data = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 } };
|
||||
piCout << "src: " << msg << "\n";
|
||||
|
||||
CAN_Raw newMsg;
|
||||
PIByteArray ar;
|
||||
ar << msg;
|
||||
ar >> newMsg;
|
||||
piCout << "after ByteArray: " << newMsg << "\n";
|
||||
|
||||
SMBusData busData;
|
||||
busData = SMBusData::create(msg);
|
||||
PIByteArray serializedBusData = busData.save();
|
||||
|
||||
SMBusData loadedBusData = SMBusData::fromByteArray(serializedBusData, busData.busType());
|
||||
newMsg = loadedBusData.value<CAN_Raw>();
|
||||
piCout << "after bus data:" << newMsg;
|
||||
}
|
||||
Reference in New Issue
Block a user