/******************************************************************************* ******************************************************************************** ** ** ** ABCC Starter Kit version 3.05.02 (2018-08-30) ** ** ** ** Delivered with: ** ** ABP 7.59.01 (2018-05-17) ** ** ABCC Driver 5.05.02 (2018-08-30) ** ** */ /******************************************************************************* ******************************************************************************** ** COPYRIGHT NOTIFICATION (c) 2015 HMS Industrial Networks AB ** ** ** ** This code is the property of HMS Industrial Networks AB. ** ** The source code may not be reproduced, distributed, or used without ** ** permission. When used together with a product from HMS, permission is ** ** granted to modify, reproduce and distribute the code in binary form ** ** without any restrictions. ** ** ** ** THE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. HMS DOES NOT ** ** WARRANT THAT THE FUNCTIONS OF THE CODE WILL MEET YOUR REQUIREMENTS, OR ** ** THAT THE OPERATION OF THE CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR ** ** THAT DEFECTS IN IT CAN BE CORRECTED. ** ******************************************************************************** ******************************************************************************** ** Example of an ADI setup with 32 ADIs each one holding a 16 bit value. ** ** In abcc_drv_cfg.h make sure that the following definitions are set to: ** ABCC_CFG_STRUCT_DATA_TYPE ( FALSE ) ** ABCC_CFG_ADI_GET_SET_CALLBACK ( TRUE ) ******************************************************************************** ******************************************************************************** */ #include #include "appl_adi_config.h" #if ( APPL_ACTIVE_ADI_SETUP == APPL_ADI_SETUP_SEPARATE_16 ) #if( ABCC_CFG_STRUCT_DATA_TYPE || !ABCC_CFG_ADI_GET_SET_CALLBACK ) #error ABCC_CFG_ADI_GET_SET_CALLBACK must be set to TRUE and ABCC_CFG_STRUCT_DATA_TYPE set to FALSE in order to run this example #endif /******************************************************************************* ** Constants ******************************************************************************** */ /*------------------------------------------------------------------------------ ** Access descriptor for the ADIs **------------------------------------------------------------------------------ */ #define APPL_READ_MAP_READ_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS | \ ABP_APPD_DESCR_MAPPABLE_READ_PD ) #define APPL_READ_MAP_WRITE_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS | \ ABP_APPD_DESCR_SET_ACCESS | \ ABP_APPD_DESCR_MAPPABLE_READ_PD ) #define APPL_WRITE_MAP_READ_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS | \ ABP_APPD_DESCR_MAPPABLE_WRITE_PD ) #define APPL_NOT_MAP_READ_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS ) #define APPL_NOT_MAP_WRITE_ACCESS_DESC ( ABP_APPD_DESCR_GET_ACCESS | \ ABP_APPD_DESCR_SET_ACCESS ) /******************************************************************************* ** Typedefs ******************************************************************************** */ typedef void (*APPL_AdiMapCallbackFuncType)( void *data, int index, int numElm); typedef void (*APPL_MbReadHoldingRegisterFuncType)(void *data, UINT32 sa, UINT32 qr); /******************************************************************************* ** Private Globals ******************************************************************************** */ /*------------------------------------------------------------------------------ ** Forward declarations **------------------------------------------------------------------------------ */ static void SetAdi1056Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ); static void SetAdi5088Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ); static void SetAdi5344Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ); static APPL_AdiMapCallbackFuncType APPL_SetAdiValueFunc; static APPL_MbReadHoldingRegisterFuncType APPL_MbReadHoldRegFunc; /*------------------------------------------------------------------------------ ** Data holder for the ADI instances **------------------------------------------------------------------------------ */ #define NUM_REGS 64 static UINT16 appl_aiUint16_10[ NUM_REGS ]; /* dummy entry */ static UINT16 appl_aiUint16_1056[ NUM_REGS ]; static UINT16 appl_aiUint16_5088[ NUM_REGS ]; static UINT16 appl_aiUint16_5344[ NUM_REGS ]; static UINT16 appl_aiUint16_11[ NUM_REGS ]; /* dummy entry */ /******************************************************************************* ** Public Globals ******************************************************************************** */ /*------------------------------------------------------------------------------ ** 32 16-bit values individually ** See abcc_ad_if.h for a more detailed description. **------------------------------------------------------------------------------ */ /*----------------------------------------------------------------------------------------------------------------------- ** iInstance | pabName | bDataType | bNumOfElements | bDesc | pxValuePtr | pxValuePropPtr| pnGetAdiValue | pnSetAdiValue **----------------------------------------------------------------------------------------------------------------------- */ #define FIRST_INSTANCE 10 AD_AdiEntryType APPL_asAdiEntryList[] = { { FIRST_INSTANCE , "ABP_UINT16_SET_1056", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_1056 ,NULL } }, NULL, SetAdi1056Value }, { FIRST_INSTANCE+1, "ABP_UINT16_SET_1120", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+2, "ABP_UINT16_SET_1184", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+3, "ABP_UINT16_SET_1248", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+4, "ABP_UINT16_SET_1312", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+5, "ABP_UINT16_SET_1376", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+6, "ABP_UINT16_SET_1440", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+7, "ABP_UINT16_SET_1504", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+8, "ABP_UINT16_SET_1568", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+9, "ABP_UINT16_SET_1632", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+10, "ABP_UINT16_SET_1696", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+11, "ABP_UINT16_SET_1760", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+12, "ABP_UINT16_SET_1824", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+13, "ABP_UINT16_SET_1888", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+14, "ABP_UINT16_SET_1952", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+15, "ABP_UINT16_SET_2016", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+16, "ABP_UINT16_SET_2080", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+17, "ABP_UINT16_SET_2144", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+18, "ABP_UINT16_SET_2208", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+19, "ABP_UINT16_SET_2272", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+20, "ABP_UINT16_SET_2336", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+21, "ABP_UINT16_SET_2400", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+22, "ABP_UINT16_SET_2464", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+23, "ABP_UINT16_SET_2528", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+24, "ABP_UINT16_SET_2592", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+25, "ABP_UINT16_SET_2656", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+26, "ABP_UINT16_SET_2720", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+27, "ABP_UINT16_SET_2784", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+28, "ABP_UINT16_SET_2848", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+29, "ABP_UINT16_SET_2912", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+30, "ABP_UINT16_SET_2976", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+31, "ABP_UINT16_SET_3040", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+32, "ABP_UINT16_SET_3104", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+33, "ABP_UINT16_SET_3168", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+34, "ABP_UINT16_SET_3232", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+35, "ABP_UINT16_SET_3296", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+36, "ABP_UINT16_SET_3360", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+37, "ABP_UINT16_SET_3424", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+38, "ABP_UINT16_SET_3488", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+39, "ABP_UINT16_SET_3552", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+40, "ABP_UINT16_SET_3616", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+41, "ABP_UINT16_SET_3680", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+42, "ABP_UINT16_SET_3744", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+43, "ABP_UINT16_SET_3808", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+44, "ABP_UINT16_SET_3872", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+45, "ABP_UINT16_SET_3936", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+46, "ABP_UINT16_SET_4000", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+47, "ABP_UINT16_SET_4064", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+48, "ABP_UINT16_SET_4128", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+49, "ABP_UINT16_SET_4192", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+50, "ABP_UINT16_SET_4256", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+51, "ABP_UINT16_SET_4320", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+52, "ABP_UINT16_SET_4384", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+53, "ABP_UINT16_SET_4448", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+54, "ABP_UINT16_SET_4512", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+55, "ABP_UINT16_SET_4576", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+56, "ABP_UINT16_SET_4640", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+57, "ABP_UINT16_SET_4704", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+58, "ABP_UINT16_SET_4768", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+59, "ABP_UINT16_SET_4832", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+60, "ABP_UINT16_SET_4896", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+61, "ABP_UINT16_SET_4960", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+62, "ABP_UINT16_SET_5024", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+63, "ABP_UINT16_SET_5088", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_5088 ,NULL } }, NULL, SetAdi5088Value }, { FIRST_INSTANCE+64, "ABP_UINT16_SET_5152", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+65, "ABP_UINT16_SET_5216", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+66, "ABP_UINT16_SET_5280", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+67, "ABP_UINT16_SET_5344", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_5344 ,NULL } }, NULL, SetAdi5344Value }, { FIRST_INSTANCE+68, "ABP_UINT16_SET_5408", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+69, "ABP_UINT16_SET_5472", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+70, "ABP_UINT16_SET_5536", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+71, "ABP_UINT16_SET_5600", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+72, "ABP_UINT16_SET_5664", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+73, "ABP_UINT16_SET_5728", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+74, "ABP_UINT16_SET_5792", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+75, "ABP_UINT16_SET_5856", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+76, "ABP_UINT16_SET_5920", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+77, "ABP_UINT16_SET_5984", ABP_UINT16, NUM_REGS, APPL_READ_MAP_WRITE_ACCESS_DESC, { { appl_aiUint16_10 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+78, "ABP_UINT16_GET_0000", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+79, "ABP_UINT16_GET_0064", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+80, "ABP_UINT16_GET_0128", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+81, "ABP_UINT16_GET_0192", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+82, "ABP_UINT16_GET_0256", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+83, "ABP_UINT16_GET_0320", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+84, "ABP_UINT16_GET_0384", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+85, "ABP_UINT16_GET_0448", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+86, "ABP_UINT16_GET_0512", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+87, "ABP_UINT16_GET_0576", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+88, "ABP_UINT16_GET_0640", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+89, "ABP_UINT16_GET_0704", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+90, "ABP_UINT16_GET_0768", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+91, "ABP_UINT16_GET_0832", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+92, "ABP_UINT16_GET_0896", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+93, "ABP_UINT16_GET_0960", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+94, "ABP_UINT16_GET_1024", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+95, "ABP_UINT16_GET_1088", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+96, "ABP_UINT16_GET_1152", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+97, "ABP_UINT16_GET_1216", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+98, "ABP_UINT16_GET_1280", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+99, "ABP_UINT16_GET_1344", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+100, "ABP_UINT16_GET_1408", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+101, "ABP_UINT16_GET_1472", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+102, "ABP_UINT16_GET_1536", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+103, "ABP_UINT16_GET_1600", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+104, "ABP_UINT16_GET_1664", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+105, "ABP_UINT16_GET_1728", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+106, "ABP_UINT16_GET_1792", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+107, "ABP_UINT16_GET_1856", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+108, "ABP_UINT16_GET_1920", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+109, "ABP_UINT16_GET_1984", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+110, "ABP_UINT16_GET_2048", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+111, "ABP_UINT16_GET_2112", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+112, "ABP_UINT16_GET_2176", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+113, "ABP_UINT16_GET_2240", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+114, "ABP_UINT16_GET_2304", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+115, "ABP_UINT16_GET_2368", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+116, "ABP_UINT16_GET_2432", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+117, "ABP_UINT16_GET_2496", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+118, "ABP_UINT16_GET_2560", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+119, "ABP_UINT16_GET_2624", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+120, "ABP_UINT16_GET_2688", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+121, "ABP_UINT16_GET_2752", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+122, "ABP_UINT16_GET_2816", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+123, "ABP_UINT16_GET_2880", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+124, "ABP_UINT16_GET_2944", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+125, "ABP_UINT16_GET_3008", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+126, "ABP_UINT16_GET_3072", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+127, "ABP_UINT16_GET_3136", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+128, "ABP_UINT16_GET_3200", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+129, "ABP_UINT16_GET_3264", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+130, "ABP_UINT16_GET_3328", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+131, "ABP_UINT16_GET_3392", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+132, "ABP_UINT16_GET_3456", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+133, "ABP_UINT16_GET_3520", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+134, "ABP_UINT16_GET_3584", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+135, "ABP_UINT16_GET_3648", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+136, "ABP_UINT16_GET_3712", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+137, "ABP_UINT16_GET_3776", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+138, "ABP_UINT16_GET_3840", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+139, "ABP_UINT16_GET_3904", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+140, "ABP_UINT16_GET_3968", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+141, "ABP_UINT16_GET_4032", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+142, "ABP_UINT16_GET_4096", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+143, "ABP_UINT16_GET_4160", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+144, "ABP_UINT16_GET_4224", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+145, "ABP_UINT16_GET_4288", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+146, "ABP_UINT16_GET_4352", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+147, "ABP_UINT16_GET_4416", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+148, "ABP_UINT16_GET_4480", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+149, "ABP_UINT16_GET_4544", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+150, "ABP_UINT16_GET_4608", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+151, "ABP_UINT16_GET_4672", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+152, "ABP_UINT16_GET_4736", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+153, "ABP_UINT16_GET_4800", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+154, "ABP_UINT16_GET_4864", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+155, "ABP_UINT16_GET_4928", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, { FIRST_INSTANCE+156, "ABP_UINT16_GET_4992", ABP_UINT16, NUM_REGS, APPL_WRITE_MAP_READ_ACCESS_DESC, { { appl_aiUint16_11 ,NULL } }, NULL, NULL }, }; #define NUM_HOLDING_REG_ARRAY 78 #define INPUT_REG_START NUM_HOLDING_REG_ARRAY #define NUM_INPUT_REG_ARRAY 79 /* **------------------------------------------------------------------------------ ** Map all adi:s in both directions ** See abcc_ad_if.h for a more detailed description. **------------------------------------------------------------------------------ ** 1. AD instance | 2. Direction | 3. Num elements | 4. Start index | **------------------------------------------------------------------------------ */ const AD_MapType APPL_asAdObjDefaultMap[] = { { FIRST_INSTANCE, PD_READ, AD_MAP_ALL_ELEM, 0 }, { FIRST_INSTANCE+63, PD_READ, AD_MAP_ALL_ELEM, 0 }, { FIRST_INSTANCE+67, PD_READ, AD_MAP_ALL_ELEM, 0 }, { FIRST_INSTANCE + NUM_HOLDING_REG_ARRAY, PD_WRITE, AD_MAP_ALL_ELEM, 0 }, { AD_MAP_END_ENTRY } }; /******************************************************************************* ** Private Services ******************************************************************************** */ /*------------------------------------------------------------------------------ ** Callback of type ABCC_SetAdiValueFuncType. The function will be called when ** the network writes to ADI#1056, 5088, or 5344 . ** ** ABCC_SetAdiValueFuncType is declared in abcc_ad_if.h **------------------------------------------------------------------------------ */ static void SetAdi1056Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ) { if (NULL != APPL_SetAdiValueFunc) APPL_SetAdiValueFunc(psAdiEntry->uData.sUINT16.piValuePtr, bNumElements, 1056); } static void SetAdi5088Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ) { if (NULL != APPL_SetAdiValueFunc) APPL_SetAdiValueFunc(psAdiEntry->uData.sUINT16.piValuePtr, bNumElements, 5088); } static void SetAdi5344Value( const struct AD_AdiEntry* psAdiEntry, UINT8 bNumElements, UINT8 bStartIndex ) { if (NULL != APPL_SetAdiValueFunc) APPL_SetAdiValueFunc(psAdiEntry->uData.sUINT16.piValuePtr, bNumElements, 5344); } /******************************************************************************* ** Public Services ******************************************************************************** */ UINT16 APPL_GetNumAdi( void ) { return( sizeof( APPL_asAdiEntryList ) / sizeof( AD_AdiEntryType ) ); } void APPL_CyclicalProcessing( void ) { /* ** This function is called when read and write data have been updated. It ** could for example be used for operations on the ADI data. ** Not used in this example. */ } /** * \brief function to initialise the ADI for DSP2v2 * \param pReadHoldingRegFunc callback function to read master modbus holding registers * into ADI holding registers * \param pSetAdiValueFunc callback function to set master modbus holding registers * from ADI holding registers * \param pIReg pointer to the master input registers. */ void APPL_DSP2Init(void *pReadHoldingRegFunc, void *pSetAdiValueFunc, void *pIReg) { int i; /* map the ADI input registers addresses to the master modbus input addresses */ for (i = 0; i < NUM_INPUT_REG_ARRAY; i++) APPL_asAdiEntryList[i + INPUT_REG_START].uData.sUINT16.piValuePtr = pIReg + i * NUM_REGS * sizeof(UINT16); /* Save the read holding register callback */ APPL_MbReadHoldRegFunc = pReadHoldingRegFunc; if (NULL != APPL_MbReadHoldRegFunc) { /* initialise the ADI holding registers from the master modbus holding registers */ APPL_MbReadHoldRegFunc(appl_aiUint16_1056, 1056, NUM_REGS); APPL_MbReadHoldRegFunc(appl_aiUint16_5088, 5088, NUM_REGS); APPL_MbReadHoldRegFunc(appl_aiUint16_5344, 5344, NUM_REGS); } /* save the set holding register callback */ if (NULL != pSetAdiValueFunc) APPL_SetAdiValueFunc = pSetAdiValueFunc; } /******************************************************************************* ** Tasks ******************************************************************************** */ #endif