#include <string.h> #include <inttypes.h> #include "softdevice_handler.h" #include "app_scheduler.h" #include "app_timer_appsh.h" #include "nrf_dfu_settings.h" #include "ble_dis.h" #include "istddef.h" #include "iopincfg.h" #include "iopinctrl.h" #include "stddev.h" #include "custom_board.h" #include "lmx_blueio.h" #include "blueio_blesrvc.h" #include "ledmxio.h" #include "ble_periph_app.h" #define DEVICE_NAME "LmxBLue" /**< Name of device. Will be included in the advertising data. */ #define MANUFACTURER_NAME "I-SYST inc." /**< Manufacturer. Will be passed to Device Information Service. */ #define MODEL_NUM "LMX_DISPLAY" /**< Model number. Will be passed to Device Information Service. */ #define MANUFACTURER_ID ISYST_BLUETOOTH_ID /**< Manufacturer ID, part of System ID. Will be passed to Device Information Service. */ #define ORG_UNIQUE_ID ISYST_BLUETOOTH_ID /**< Organizational Unique ID, part of System ID. Will be passed to Device Information Service. */ #define APP_ADV_INTERVAL MSEC_TO_UNITS(64, UNIT_0_625_MS) /**< The advertising interval (in units of 0.625 ms. This value corresponds to 40 ms). */ #define APP_ADV_TIMEOUT_IN_SECONDS 180 /**< The advertising timeout (in units of seconds). */ void LmxBlueSrvcWrCallback(BLUEIOSRVC *pBlueIOSvc, uint8_t *pData, int Offset, int Len); static const IOPINCFG s_GpioPins[] = { {BLUEIO_CONNECT_LED_PORT, BLUEIO_CONNECT_LED_PIN, 0, IOPINDIR_OUTPUT, IOPINRES_NONE, IOPINTYPE_NORMAL}, // BLE connect }; static const int s_NbGpioPins = sizeof(s_GpioPins) / sizeof(IOPINCFG); static const ble_uuid_t s_AdvUuids[] = { {LMXBLUE_UUID_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN} }; static const char s_RdCharDescString[] = { "LmxBlue data characteristic", }; static const char s_WdCharDescString[] = { "LmxBlue write characteristic", }; uint8_t g_ManData[8]; BLUEIOSRVC_CHAR g_LmxChars[] = { { LMXBLUE_UUID_MSGCHAR, 256, BLUEIOSVC_CHAR_PROP_WRITEWORESP, s_WdCharDescString, LmxBlueSrvcWrCallback } }; const BLUEIOSRVC_CFG s_LmxBlueSrvcCfg = { BLUEIOSRVC_SECTYPE_NONE, LMXBLUE_UUID_BASE, LMXBLUE_UUID_SERVICE, 1, g_LmxChars }; BLUEIOSRVC g_LmxBleSrvc; const BLEAPP_CFG s_BleAppCfg = { BLEAPP_MODE_APPSCHED, "LMXBLUE", "IBB-LMXBLUE", "I-SYST inc.", "", "0.0", "0.0", ISYST_BLUETOOTH_ID, 1, g_ManData, sizeof(g_ManData), BLEAPP_SECTYPE_NONE, BLEAPP_SECEXCHG_NONE, NULL,//s_AdvUuids, 0,//sizeof(s_AdvUuids) / sizeof(ble_uuid_t), APP_ADV_INTERVAL, APP_ADV_TIMEOUT_IN_SECONDS, 0, BLUEIO_CONNECT_LED_PORT, BLUEIO_CONNECT_LED_PIN, NULL }; // I/O pins connection LEDMXIOCFG g_IOCfg = { LMXBLUE_WR_PIN, // WR pin LMXBLUE_RD_PIN, // RD pin LMXBLUE_DATA_PIN, // Data pin LMXBLUE_EN_PIN, // En pin { LMXBLUE_AD0_PIN, LMXBLUE_AD1_PIN, LMXBLUE_AD2_PIN, LMXBLUE_AD3_PIN,}, // CS pins 4, // Number of CS pins LMXBLUE_CSTYPE }; #define LMXBLUE_LINE_MAX 16 // Display board configuration LEDMXCFG g_LmxCfg[LMXBLUE_LINE_MAX] = { { &g_IOCfg, 4, // Number of display board in daisy chain, only one in this case {0, 1, 2, 3,}, // display board ordering }, { &g_IOCfg, 4, // Number of display board in daisy chain, only one in this case {4, 5, 6, 7,}, // display board ordering }, { &g_IOCfg, 4, // Number of display board in daisy chain, only one in this case {8, 9, 10, 11,}, // display board ordering }, { &g_IOCfg, 4, // Number of display board in daisy chain, only one in this case {12, 13, 14, 15,}, // display board ordering }, }; LEDMXDEV g_LmxDev[LMXBLUE_LINE_MAX] = {{0,},}; void LmxBlueSrvcWrCallback(BLUEIOSRVC *pBlueIOSvc, uint8_t *pData, int Offset, int Len) { LMXMSG *msg = (LMXMSG*)pData; msg->Text[msg->Length] = 0; //LedMxPrintLeft(&g_LmxDev, msg->Text); } void BlePeriphAppSrvcEvtDispatch(ble_evt_t * p_ble_evt) { BlueIOBleSvcEvtHandler(&g_LmxBleSrvc, p_ble_evt); } void BlePeriphAppInitServices() { uint32_t err_code; err_code = BlueIOBleSrvcInit(&g_LmxBleSrvc, &s_LmxBlueSrvcCfg); APP_ERROR_CHECK(err_code); } void HardwareInit() { // config Bluetooth connection state LED IOPinCfg(s_GpioPins, s_NbGpioPins); // Initialize IDM-LMX3208 series displays //LedMxInit(&g_LmxDev, &g_LmxCfg); //LedMxPrintLeft(&g_LmxDev, "IBB-LMXBLUE Blutooth LED matrix demo"); } void BlePeriphAppInitUserData() { } // // Print a greeting message on standard output and exit. // // On embedded platforms this might require semi-hosting or similar. // // For example, for toolchains derived from GNU Tools for Embedded, // to enable semi-hosting, the following was added to the linker: // // --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lc -lm -lrdimon -Wl,--end-group // // Adjust it for other toolchains. // int main() { HardwareInit(); BlePeriphAppInit(&s_BleAppCfg, true); BlePeriphAppStart(); while(1) { BlePeriphAppProcessEvt(); } return 0; }
What are the changes required to change this code for SDK 15.3.0