diff --git a/arduino/NurMicroApi/examples/NurExample/NurExample.ino b/arduino/NurMicroApi/examples/NurExample/NurExample.ino index 70a6f5d..4565a04 100644 --- a/arduino/NurMicroApi/examples/NurExample/NurExample.ino +++ b/arduino/NurMicroApi/examples/NurExample/NurExample.ino @@ -4,12 +4,12 @@ /* NurExample Does tag inventory in loop every 1000ms. - + This example code is in the public domain. */ // NUR serial port baud rate. -// NOTE: By default NUR module is configured to 115200 baudrate. +// NOTE: By default NUR module is configured to 115200 baudrate. // If using something else baudrate (e.g. 38400) you'll need to reconfigure NUR for other baudrate using Nordic ID RFID Configurator app. #define NUR_SERIAL_BAUDRATE (38400) @@ -35,7 +35,7 @@ SoftwareSerial swSerial(10, 11); // RX, TX static BYTE ApiRxBuffer[256]; static BYTE ApiTxBuffer[128]; -// Ttue if NUR module detected in setup() +// True if NUR module detected in setup() BOOL NurAvailable = FALSE; // NurMicroApi handle @@ -45,7 +45,7 @@ static struct NUR_API_HANDLE gApi = NULL, // TransportReadDataFunction NULL, // TransportWriteDataFunction NULL, // UnsolEventHandler; - + NULL, // BYTE *TxBuffer; 0, // DWORD TxBufferLen; @@ -81,7 +81,7 @@ int nur_serial_read(struct NUR_API_HANDLE *hNurApi, BYTE *buffer, DWORD bufferLe *bytesRead = dwRead; - return NUR_SUCCESS; + return NUR_SUCCESS; } // Write buffer to NUR serial @@ -89,7 +89,7 @@ int nur_serial_write(struct NUR_API_HANDLE *hNurApi, BYTE *buffer, DWORD bufferL { DWORD dwWritten = 0; - while (dwWritten < bufferLen) + while (dwWritten < bufferLen) { NurSerial.write(buffer[dwWritten++]); } @@ -126,7 +126,7 @@ static void nur_print_versions() PrintSerial.print(F("Versions, mode ")); PrintSerial.print((char)vr->mode); PrintSerial.println(""); - + PrintSerial.print(F(" - primary : ")); PrintSerial.print(vr->vMajor, DEC); PrintSerial.print(F(".")); @@ -134,7 +134,7 @@ static void nur_print_versions() PrintSerial.print(F("-")); PrintSerial.print((char)vr->vBuild); PrintSerial.println(""); - + PrintSerial.print(F(" - secondary : ")); PrintSerial.print(vr->otherMajor, DEC); PrintSerial.print(F(".")); @@ -151,11 +151,46 @@ static void nur_print_versions() #endif } +// Configure NUR module +static void nur_configure_module() +{ + int rc = NUR_SUCCESS; + struct NUR_CMD_LOADSETUP_PARAMS params; + // Flag settings that you want to chage + params.flags = NUR_SETUP_TXLEVEL | NUR_SETUP_ANTMASK | NUR_SETUP_SELECTEDANT; + // Set TxLevel to maximum (500mW/1000mW depending from the module) + params.txLevel = 0; + // Enable antenna 0. + // Use bit operation if you want to enable multiple + // antennas like antenna 0 and 1 (NUR_ANTENNAMASK_1 | NUR_ANTENNAMASK_2) + params.antennaMask = NUR_ANTENNAMASK_1; + // Set antenna selection to auto mode + params.selectedAntenna = NUR_ANTENNAID_AUTOSELECT; +#ifdef PrintSerial + PrintSerial.print(F("Configure NUR module")); +#endif + // Set new module setti + rc = NurApiSetModuleSetup(&gApi, ¶ms); + if (rc == NUR_SUCCESS) { +#ifdef PrintSerial + PrintSerial.print(F("OK")); +#endif + } + else + { +#ifdef PrintSerial + PrintSerial.print(F("SetModuleSetup error. Code = ")); + PrintSerial.print(rc, DEC); + PrintSerial.println(""); +#endif + } +} + #ifdef PrintSerial void print_hex(int val) { - char tmp[3]; - sprintf(tmp, "%02X", val); - PrintSerial.print(tmp); + char tmp[3]; + sprintf(tmp, "%02X", val); + PrintSerial.print(tmp); } #endif @@ -172,7 +207,7 @@ int nur_fetch_tags_function(struct NUR_API_HANDLE *hNurApi, struct NUR_IDBUFFER_ PrintSerial.print(tag->scaledRssi, DEC); PrintSerial.print(F("%) EPC: ")); - for (n=0; nepcLen; n++) { + for (n = 0; n < tag->epcLen; n++) { print_hex(tag->epcData[n]); } PrintSerial.println(""); @@ -195,16 +230,16 @@ void nur_tag_inventory() // Clear tag buffer rc = NurApiClearTags(&gApi); - if (rc == NUR_SUCCESS) + if (rc == NUR_SUCCESS) { // Perform tag inventory rc = NurApiInventory(&gApi, NULL); // Pass NULL as params, uses default inventory settings from module setup - if (rc == NUR_SUCCESS) + if (rc == NUR_SUCCESS) { // Fetch tags one by one int tagCount, n; tagCount = gApi.resp->inventory.numTagsMem; - for (n=0; n sentence=Allows an Arduino board with UART capabilites to use Nordic ID NUR module based UHF RFID readers. diff --git a/arduino/NurMicroApi/src/NurMicroApi.c b/arduino/NurMicroApi/src/NurMicroApi.c index d60be74..620aaca 100644 --- a/arduino/NurMicroApi/src/NurMicroApi.c +++ b/arduino/NurMicroApi/src/NurMicroApi.c @@ -1357,7 +1357,7 @@ int NURAPICONV NurApiProgramBuffer(struct NUR_API_HANDLE *hNurApi, pProgramProgr if (pageSize > NUR_FLASH_PAGE_SIZE) pageSize = NUR_FLASH_PAGE_SIZE; - memcpy(pagewriteParams->data, &buffer[writePos], pageSize); + nurMemcpy(pagewriteParams->data, &buffer[writePos], pageSize); if (pageSize < NUR_FLASH_PAGE_SIZE) { // Pad with 0xFF diff --git a/arduino/NurMicroApi/src/NurMicroApi.h b/arduino/NurMicroApi/src/NurMicroApi.h index dade72c..722e32f 100644 --- a/arduino/NurMicroApi/src/NurMicroApi.h +++ b/arduino/NurMicroApi/src/NurMicroApi.h @@ -469,12 +469,12 @@ enum NUR_MODULESETUP_FLAGS NUR_SETUP_AUTOPERIOD = (1L<<22), /**< stixPeriod field in struct NUR_MODULESETUP is valid */ NUR_SETUP_PERANTPOWER = (1L<<23), /**< antPower field in struct NUR_MODULESETUP is valid */ NUR_SETUP_PERANTOFFSET = (1L<<24), /**< powerOffset field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_ANTMASKEX = (1<<25), /**< antennaMaskEx field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_AUTOTUNE = (1<<26), /**< autotune field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_PERANTPOWER_EX = (1<<27), /**< antPowerEx field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_RXSENS = (1<<28), /**< rxSensitivity field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_ANTMASKEX = (1L<<25), /**< antennaMaskEx field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_AUTOTUNE = (1L<<26), /**< autotune field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_PERANTPOWER_EX = (1L<<27), /**< antPowerEx field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_RXSENS = (1L<<28), /**< rxSensitivity field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_ALL = ((1 << 29) - 1) /**< All setup flags in the structure. */ + NUR_SETUP_ALL = ((1L << 29) - 1) /**< All setup flags in the structure. */ }; /** Possible inventory targets. @@ -853,7 +853,7 @@ NUR_API int NURAPICONV NurApiInventoryEx(struct NUR_API_HANDLE *hNurApi, NUR_API int NURAPICONV NurApiGetInventoryReadConfig(struct NUR_API_HANDLE *hNurApi); NUR_API int NURAPICONV NurApiSetInventoryReadConfig(struct NUR_API_HANDLE *hNurApi, - struct NUR_CMD_CONFIGIR_PARAMS *params); + struct NUR_CMD_IRCONFIG_PARAMS *params); NUR_API int NURAPICONV NurApiFetchTags(struct NUR_API_HANDLE *hNurApi, BOOL includeMeta, BOOL clearModuleTags, int *tagsReceived, pFetchTagsFunction tagFunc); NUR_API int NURAPICONV NurApiFetchTagAt(struct NUR_API_HANDLE *hNurApi, BOOL includeMeta, int tagNum, pFetchTagsFunction tagFunc); @@ -884,7 +884,7 @@ int NURAPICONV NurApiGetMode(struct NUR_API_HANDLE *hNurApi, char *mode); int NURAPICONV NurApiModuleRestart(struct NUR_API_HANDLE *hNurApi); int NURAPICONV NurApiEnterBoot(struct NUR_API_HANDLE *hNurApi); -#define NUR_APP_FIRST_PAGE ((64 * 1024) / NUR_FLASH_PAGE_SIZE) +#define NUR_APP_FIRST_PAGE ((64L * 1024L) / NUR_FLASH_PAGE_SIZE) #define NUR_BL_FIRST_PAGE (0) struct NUR_PRGPROGRESS_DATA diff --git a/arduino/NurMicroApi_arduino.zip b/arduino/NurMicroApi_arduino.zip index 37e119d..bc01a7f 100644 Binary files a/arduino/NurMicroApi_arduino.zip and b/arduino/NurMicroApi_arduino.zip differ diff --git a/source/NurMicroApi.c b/source/NurMicroApi.c index d60be74..620aaca 100644 --- a/source/NurMicroApi.c +++ b/source/NurMicroApi.c @@ -1357,7 +1357,7 @@ int NURAPICONV NurApiProgramBuffer(struct NUR_API_HANDLE *hNurApi, pProgramProgr if (pageSize > NUR_FLASH_PAGE_SIZE) pageSize = NUR_FLASH_PAGE_SIZE; - memcpy(pagewriteParams->data, &buffer[writePos], pageSize); + nurMemcpy(pagewriteParams->data, &buffer[writePos], pageSize); if (pageSize < NUR_FLASH_PAGE_SIZE) { // Pad with 0xFF diff --git a/source/NurMicroApi.h b/source/NurMicroApi.h index dade72c..722e32f 100644 --- a/source/NurMicroApi.h +++ b/source/NurMicroApi.h @@ -469,12 +469,12 @@ enum NUR_MODULESETUP_FLAGS NUR_SETUP_AUTOPERIOD = (1L<<22), /**< stixPeriod field in struct NUR_MODULESETUP is valid */ NUR_SETUP_PERANTPOWER = (1L<<23), /**< antPower field in struct NUR_MODULESETUP is valid */ NUR_SETUP_PERANTOFFSET = (1L<<24), /**< powerOffset field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_ANTMASKEX = (1<<25), /**< antennaMaskEx field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_AUTOTUNE = (1<<26), /**< autotune field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_PERANTPOWER_EX = (1<<27), /**< antPowerEx field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_RXSENS = (1<<28), /**< rxSensitivity field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_ANTMASKEX = (1L<<25), /**< antennaMaskEx field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_AUTOTUNE = (1L<<26), /**< autotune field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_PERANTPOWER_EX = (1L<<27), /**< antPowerEx field in struct NUR_MODULESETUP is valid */ + NUR_SETUP_RXSENS = (1L<<28), /**< rxSensitivity field in struct NUR_MODULESETUP is valid */ - NUR_SETUP_ALL = ((1 << 29) - 1) /**< All setup flags in the structure. */ + NUR_SETUP_ALL = ((1L << 29) - 1) /**< All setup flags in the structure. */ }; /** Possible inventory targets. @@ -853,7 +853,7 @@ NUR_API int NURAPICONV NurApiInventoryEx(struct NUR_API_HANDLE *hNurApi, NUR_API int NURAPICONV NurApiGetInventoryReadConfig(struct NUR_API_HANDLE *hNurApi); NUR_API int NURAPICONV NurApiSetInventoryReadConfig(struct NUR_API_HANDLE *hNurApi, - struct NUR_CMD_CONFIGIR_PARAMS *params); + struct NUR_CMD_IRCONFIG_PARAMS *params); NUR_API int NURAPICONV NurApiFetchTags(struct NUR_API_HANDLE *hNurApi, BOOL includeMeta, BOOL clearModuleTags, int *tagsReceived, pFetchTagsFunction tagFunc); NUR_API int NURAPICONV NurApiFetchTagAt(struct NUR_API_HANDLE *hNurApi, BOOL includeMeta, int tagNum, pFetchTagsFunction tagFunc); @@ -884,7 +884,7 @@ int NURAPICONV NurApiGetMode(struct NUR_API_HANDLE *hNurApi, char *mode); int NURAPICONV NurApiModuleRestart(struct NUR_API_HANDLE *hNurApi); int NURAPICONV NurApiEnterBoot(struct NUR_API_HANDLE *hNurApi); -#define NUR_APP_FIRST_PAGE ((64 * 1024) / NUR_FLASH_PAGE_SIZE) +#define NUR_APP_FIRST_PAGE ((64L * 1024L) / NUR_FLASH_PAGE_SIZE) #define NUR_BL_FIRST_PAGE (0) struct NUR_PRGPROGRESS_DATA