Schedule table contains only one sporadic frame.
The sporadic frame is associatted with unconditional frames 0x22, 0x23 and 0x24.
#include <vector>
#include <iostream>
#include <thread>
#include <array>
#define AGHAF_DYNAMIC_LIBRARY_INIT
#include <iostream>
#include <iomanip>
void onLinMasterTx(
uint64_t timestamp,
uint8_t fid,
uint8_t datalen,
uint8_t const* data,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "datalen: " << static_cast<int>(datalen) << std::endl;
std::cout << "fid: " << static_cast<int>(fid) << std::endl;
if (data != nullptr) {
std::cout << "0x";
for (uint8_t i = 0; i < datalen; ++i) {
std::cout << std::hex << std::setw(2) << std::setfill('0')
<< static_cast<int>(data[i]);
}
std::cout << std::endl;
} else {
std::cout << "no data" << std::endl;
}
}
void onLinMasterRx(
uint64_t timestamp,
uint8_t fid,
uint8_t datalen,
uint8_t const* data,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "datalen: " << static_cast<int>(datalen) << std::endl;
std::cout << "fid: " << static_cast<int>(fid) << std::endl;
std::cout << "0x";
for (uint8_t i = 0; i < datalen; ++i) {
std::cout << std::hex << std::setw(2) << std::setfill('0')
<< static_cast<int>(data[i]);
}
std::cout << std::endl;
}
void onLinMasterError(
uint64_t timestamp,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "error: " << static_cast<int>(error) << std::endl;
}
void onLinSlaveTx(
uint64_t timestamp,
uint8_t fid,
uint8_t datalen,
uint8_t const* data,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "datalen: " << static_cast<int>(datalen) << std::endl;
std::cout << "fid: " << static_cast<int>(fid) << std::endl;
if (data != nullptr) {
std::cout << "0x";
for (uint8_t i = 0; i < datalen; ++i) {
std::cout << std::hex << std::setw(2) << std::setfill('0')
<< static_cast<int>(data[i]);
}
std::cout << std::endl;
} else {
std::cout << "no data" << std::endl;
}
}
void onLinSlaveRx(
uint64_t timestamp,
uint8_t fid,
uint8_t datalen,
uint8_t const* data,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "datalen: " << static_cast<int>(datalen) << std::endl;
std::cout << "fid: " << static_cast<int>(fid) << std::endl;
std::cout << "0x";
for (uint8_t i = 0; i < datalen; ++i) {
std::cout << std::hex << std::setw(2) << std::setfill('0')
<< static_cast<int>(data[i]);
}
std::cout << std::endl;
}
void onLinSlaveError(
uint64_t timestamp,
void *userContext)
{
(void) timestamp;
(void) userContext;
std::cout << __FUNCTION__ << std::endl;
std::cout << "error: " << static_cast<int>(error) << std::endl;
}
int main()
{
#ifdef _WIN32
AGHAF_loadLibrary(AGHAF_DEFAULT_FILENAME);
#endif
if (count > 0) {
uint32_t deviceInfoNumber = 0;
if (deviceInfoNumber > 1) {
devicesInfo[0].productNo,
devicesInfo[0].serialNo);
devicesInfo[1].productNo,
devicesInfo[1].serialNo);
if (linCount1 > 0 && linCount2 > 0) {
19200);
19200);
std::array<uint8_t, 3> spos = { 0x22, 0x23, 0x24 };
std::array<uint8_t, 4> spoFrame22 = { 0x00, 0x01, 0x02, 0x03 };
std::array<uint8_t, 5> spoFrame23 = { 0x00, 0x01, 0x02, 0x03, 0x04 };
std::array<uint8_t, 6> spoFrame24 = { 0x00, 0x01, 0x02, 0x03, 0x05, 0x06 };
linMaster,
0x22,
0,
static_cast<uint8_t>(spoFrame22.size()),
spoFrame22.data());
linSlave,
0x22,
0,
static_cast<uint8_t>(spoFrame22.size()),
nullptr);
linMaster,
0x23,
0,
static_cast<uint8_t>(spoFrame23.size()),
spoFrame23.data());
linSlave,
0x23,
0,
static_cast<uint8_t>(spoFrame23.size()),
nullptr);
linMaster,
0x24,
0,
static_cast<uint8_t>(spoFrame24.size()),
spoFrame24.data());
linSlave,
0x24,
0,
static_cast<uint8_t>(spoFrame24.size()),
nullptr);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
spoFrame22[0] = 0x0A;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
spoFrame23[1] = 0x0B;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
spoFrame24[2] = 0x0C;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
spoFrame22[3] = 0x0D;
spoFrame23[3] = 0x0D;
spoFrame24[3] = 0x0D;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
}
#ifdef _WIN32
AGHAF_unloadLibrary();
#endif
return 0;
}