Skip to content

Instantly share code, notes, and snippets.

@franz-ms-muc
Created January 15, 2023 10:03
Show Gist options
  • Save franz-ms-muc/37adef87ab2e6fc72b777d7de2eeeaa3 to your computer and use it in GitHub Desktop.
Save franz-ms-muc/37adef87ab2e6fc72b777d7de2eeeaa3 to your computer and use it in GitHub Desktop.
static int AppPoolSettings(const ISOVT_EVENT_DATA_T* psEvData)
{
static iso_u8* pu8PoolData = 0; // Pointer to the pool data ( Attention: )
static iso_u32 u32PoolSize = 0UL;
static uint16_t poolCrc = 0;
u32PoolSize = LoadPoolFromFile("/data/DefaultPool.iop", &pu8PoolData);
poolCrc = crc16_le(0, pu8PoolData, u32PoolSize);
iso_DebugPrint("LoadPoolFromFile (u32PoolSize = %d)\n", u32PoolSize);
//TODO do not crash if the File is not exist.
// Only if VT and VTC is Version 5 or higher 32 bytes are used else the first 7 bytes
iso_u8 abVersion1[] = "LOGXXXX"; // ISO version string
char buffer [5];
snprintf(buffer, 5, "%.4X",poolCrc);
//we want to replace the XXXX with the CRC value:
abVersion1[3] = buffer[0];
abVersion1[4] = buffer[1];
abVersion1[5] = buffer[2];
abVersion1[6] = buffer[3];
//resulting Pool Label:
iso_DebugPrint("abVersion **resulting Pool Label *** (%s)\n", abVersion1);
iso_u16 u16SKM_Scal = 0u;
iso_u16 u16DM_Scal = 0u; // Scaling factor * 10000
IsoVtcPoolLoad(psEvData->u8Instance, abVersion1, 80, 80, 480, // VTC instance, Version Label, SKM width and height, DM res.
PoolTransferFlash, pu8PoolData, u32PoolSize, 0UL, 0u, 0); // PoolAddress, PoolSize
u16DM_Scal = (iso_u16)IsoVtcPoolReadInfo(psEvData->u8Instance, PoolDataMaskScalFaktor); // Call only after PoolInit !!
u16SKM_Scal = (iso_u16)IsoVtcPoolReadInfo(psEvData->u8Instance, PoolSoftKeyMaskScalFaktor);
if (u16SKM_Scal <= 11111u && u16SKM_Scal >= 9000u ) //erst ab 111% saklieren, vorher nicht ... damit wird bei 80x80 und 72x72 nicht skaliert.
{
u16SKM_Scal = ISO_FACTOR_ONE;
}
/* u16DM_Scal /= 2;
u16SKM_Scal /= 2;*/
iso_DebugPrint("PoolDataMaskScalFaktor = %i", u16DM_Scal);
iso_DebugPrint("PoolSoftKeyMaskScalFaktor = %i", u16SKM_Scal);
// ------------------------------------------------------------------------------
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 1000u, 1999u, u16DM_Scal, Scaling); // DataMask
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 2000u, 2999u, u16DM_Scal, Scaling); // AlarmMask
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 3000u, 3499u, u16DM_Scal, Scaling); // Container
// SoftKeyMask
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 6000u, 6999u, u16DM_Scal, Scaling); // Button
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 7000u, 7999u, u16DM_Scal, Scaling); // InputBoolean
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 8000u, 8999u, u16DM_Scal, Scaling); // InputString
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 9000u, 9999u, u16DM_Scal, Scaling); // InputNumber
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 10000u, 10999u, u16DM_Scal, Scaling); // InputList
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 11000u, 11499u, u16DM_Scal, Scaling); // OutputString
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 12000u, 12999u, u16DM_Scal, Scaling); // OutputNumber
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 13000u, 13499u, u16DM_Scal, Scaling); // Line
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 14000u, 14499u, u16DM_Scal, Scaling); // Rectangle
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 15000u, 15499u, u16DM_Scal, Scaling); // Ellipse
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 16000u, 16499u, u16DM_Scal, Scaling); // Polygon
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 17000u, 17499u, u16DM_Scal, Scaling); // Meter
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 18000u, 18499u, u16DM_Scal, Scaling); // LinearBargraph
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 19000u, 19499u, u16DM_Scal, Scaling); // ArchedBargraph
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 20000u, 20499u, u16DM_Scal, Scaling); // PictureGraphic
// ObjectPointer
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 23000u, 23499u, u16DM_Scal, Scaling); // FontAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 24000u, 24499u, u16DM_Scal, Scaling); // LineAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 25000u, 25499u, u16DM_Scal, Scaling); // FillAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 30000u, 30999u, u16DM_Scal, Scaling); // OutputList
/*HANDLE SOFTKEY MANIPULATION*/
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 0u, 0u, u16SKM_Scal, Centering); // Working set object
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 3500u, 3999u, u16SKM_Scal, Scaling); // Container
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 5000u, 5999u, u16SKM_Scal, Centering); // Softkeys
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 11500u, 11999u, u16SKM_Scal, Scaling); // OutputString
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 13500u, 13999u, u16SKM_Scal, Scaling); // Line
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 14500u, 14999u, u16SKM_Scal, Scaling); // Rectangle
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 15500u, 15999u, u16SKM_Scal, Scaling); // Ellipse
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 16500u, 16999u, u16SKM_Scal, Scaling); // Polygon
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 20500u, 20999u, u16SKM_Scal, Scaling); // Working set bitmaps
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 23500u, 23999u, u16SKM_Scal, Scaling); // FontAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 24500u, 24900u, u16SKM_Scal, Scaling); // LineAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 25000u, 25499u, u16SKM_Scal, Scaling); // FillAttributes
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 29000u, 29999u, u16SKM_Scal, Centering); // Auxiliary function
iso_u16 value_of_VT_VERSIONNR = IsoVtcGetStatusInfo(psEvData->u8Instance, VT_VERSIONNR);
iso_DebugPrint("VT_VERSIONNR = %i", value_of_VT_VERSIONNR);
if (value_of_VT_VERSIONNR == VT_V2_FE)
{
iso_DebugPrint("Transforming Auxiliary function Type 2 into Type 1");
IsoVtcPoolSetIDRangeMode(psEvData->u8Instance, 29000, 29999, 0, AuxToV2);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment