mirror of
https://github.com/intrepidcs/libicsneo.git
synced 2026-08-05 01:18:36 +02:00
Device: Refactor A2B APIs
* Removes features in `A2BMessage` class to support API for reading 16, 24, and 32 bit samples from A2B channels * Re-organizes WAV receiving and transmitting code and API * Creates API for mapping message channels to WAV channels and vice versa for transmitting and receiving * Fixes `icsneo::Network::NetID::ExtendedData` VnetID bug for `icsneo::ExtendedDataMessage` decoding * Creates RAD-A2B sequence chart example * Fixes coremini uploading for certain devices in EEPROM by introducing `icsneo::Device::supportsEraseMemory`
This commit is contained in:
committed by
Kyle Schwarz
parent
06f6861130
commit
cb22e622b3
@@ -29,8 +29,8 @@ protected:
|
||||
|
||||
std::vector<uint8_t> testBytes =
|
||||
{0xaa, 0x0c, 0x15, 0x00, 0x0b, 0x02, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00,
|
||||
0x08, 0x04, 0x00, 0x00};
|
||||
0x08, 0x00, 0x00, 0x00, 0xCC, 0xFF, 0x00, 0x00,
|
||||
0x9A, 0xFF, 0x00, 0x00};
|
||||
|
||||
std::vector<uint8_t> recvBytes =
|
||||
{0xaa, 0x00, 0x2a, 0x00, 0x0a, 0x02, 0x02, 0x01,
|
||||
@@ -44,12 +44,30 @@ protected:
|
||||
TEST_F(A2BEncoderDecoderTest, PacketEncoderTest)
|
||||
{
|
||||
std::vector<uint8_t> bytestream;
|
||||
auto messagePtr = std::make_shared<icsneo::A2BMessage>((uint8_t)2, true, 8);
|
||||
auto messagePtr = std::make_shared<icsneo::A2BMessage>(
|
||||
static_cast<size_t>(1u),
|
||||
icsneo::A2BMessage::TDMMode::TDM2,
|
||||
true
|
||||
);
|
||||
|
||||
messagePtr->network = icsneo::Network::NetID::A2B2;
|
||||
A2BMessage& message = *messagePtr.get();
|
||||
|
||||
message[0][0] = (0x02 << 8) | (0x03);
|
||||
message[0][2] = (0x04 << 8) | (0x08);
|
||||
message.setChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(0u),
|
||||
0u,
|
||||
-52,
|
||||
icsneo::PCMType::L16
|
||||
);
|
||||
|
||||
message.setChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(1u),
|
||||
0u,
|
||||
-102,
|
||||
icsneo::PCMType::L16
|
||||
);
|
||||
|
||||
packetEncoder->encode(*packetizer, bytestream, messagePtr);
|
||||
EXPECT_EQ(bytestream, testBytes);
|
||||
@@ -58,14 +76,45 @@ TEST_F(A2BEncoderDecoderTest, PacketEncoderTest)
|
||||
TEST_F(A2BEncoderDecoderTest, PacketDecoderTest)
|
||||
{
|
||||
std::shared_ptr<icsneo::Message> decodeMsg;
|
||||
std::shared_ptr<icsneo::A2BMessage> message = std::make_shared<icsneo::A2BMessage>((uint8_t)2, true, 8);
|
||||
auto message = std::make_shared<icsneo::A2BMessage>(
|
||||
static_cast<size_t>(1u),
|
||||
icsneo::A2BMessage::TDMMode::TDM2,
|
||||
true
|
||||
);
|
||||
|
||||
message->network = icsneo::Network::NetID::A2B1;
|
||||
message->setTxMsgBit(false);
|
||||
message->setMonitorBit(true);
|
||||
message->txmsg = false;
|
||||
message->monitor = true;
|
||||
|
||||
EXPECT_TRUE(message->setSample(0, 0, (0x02 << 8) | (0x03)));
|
||||
EXPECT_TRUE(message->setSample(2, 0, (0x04 << 8) | (0x08)));
|
||||
message->setChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(0u),
|
||||
0u,
|
||||
(0x02 << 8) | (0x03),
|
||||
icsneo::PCMType::L16
|
||||
);
|
||||
|
||||
message->setChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(1u),
|
||||
0u,
|
||||
(0x04 << 8) | (0x08),
|
||||
icsneo::PCMType::L16
|
||||
);
|
||||
|
||||
EXPECT_TRUE(message->getChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(0u),
|
||||
0u,
|
||||
icsneo::PCMType::L16
|
||||
) == static_cast<icsneo::PCMSample>((0x02 << 8) | (0x03)));
|
||||
|
||||
EXPECT_TRUE(message->getChannelSample(
|
||||
icsneo::A2BMessage::Direction::Downstream,
|
||||
static_cast<uint8_t>(1u),
|
||||
0u,
|
||||
icsneo::PCMType::L16
|
||||
) == static_cast<icsneo::PCMSample>((0x04 << 8) | (0x08)));
|
||||
|
||||
EXPECT_TRUE(packetizer->input(recvBytes));
|
||||
auto packets = packetizer->output();
|
||||
@@ -76,10 +125,10 @@ TEST_F(A2BEncoderDecoderTest, PacketDecoderTest)
|
||||
auto testMessage = std::dynamic_pointer_cast<icsneo::A2BMessage>(decodeMsg);
|
||||
EXPECT_EQ(message->network, testMessage->network);
|
||||
EXPECT_EQ(message->data, testMessage->data);
|
||||
EXPECT_EQ(message->getNumChannels(), testMessage->getNumChannels());
|
||||
EXPECT_EQ(message->isMonitorMsg(), testMessage->isMonitorMsg());
|
||||
EXPECT_EQ(message->isTxMsg(), testMessage->isTxMsg());
|
||||
EXPECT_EQ(message->isErrIndicator(), testMessage->isErrIndicator());
|
||||
EXPECT_EQ(message->isSyncFrame(), testMessage->isSyncFrame());
|
||||
EXPECT_EQ(message->getRFU2(), testMessage->getRFU2());
|
||||
EXPECT_EQ(message->numChannels, testMessage->numChannels);
|
||||
EXPECT_EQ(message->monitor, testMessage->monitor);
|
||||
EXPECT_EQ(message->txmsg, testMessage->txmsg);
|
||||
EXPECT_EQ(message->errIndicator, testMessage->errIndicator);
|
||||
EXPECT_EQ(message->syncFrame, testMessage->syncFrame);
|
||||
EXPECT_EQ(message->rfu2, testMessage->rfu2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user