C API: Allow querying of specifically non-device errors

This commit is contained in:
Paul Hollinsky
2018-10-30 18:33:43 -04:00
parent 5bc65554f9
commit 6399b3d8f2
+8 -4
View File
@@ -398,7 +398,7 @@ bool icsneo_getErrors(neoerror_t* errors, size_t* size) {
} }
bool icsneo_getDeviceErrors(const neodevice_t* device, neoerror_t* errors, size_t* size) { bool icsneo_getDeviceErrors(const neodevice_t* device, neoerror_t* errors, size_t* size) {
if(!icsneo_isValidNeoDevice(device)) { if(device != nullptr && !icsneo_isValidNeoDevice(device)) {
ErrorManager::GetInstance().add(APIError::InvalidNeoDevice); ErrorManager::GetInstance().add(APIError::InvalidNeoDevice);
return false; return false;
} }
@@ -408,7 +408,8 @@ bool icsneo_getDeviceErrors(const neodevice_t* device, neoerror_t* errors, size_
return false; return false;
} }
ErrorFilter filter = (icsneo::Device*)device->device; // Creating the filter will nullptr is okay! It will find any errors not associated with a device.
ErrorFilter filter = (device != nullptr ? device->device : nullptr);
if(errors == nullptr) { if(errors == nullptr) {
*size = icsneo::ErrorCount(filter); *size = icsneo::ErrorCount(filter);
@@ -441,12 +442,15 @@ void icsneo_discardAllErrors(void) {
} }
void icsneo_discardDeviceErrors(const neodevice_t* device) { void icsneo_discardDeviceErrors(const neodevice_t* device) {
if(!icsneo_isValidNeoDevice(device)) { if(device != nullptr && !icsneo_isValidNeoDevice(device)) {
ErrorManager::GetInstance().add(APIError::InvalidNeoDevice); ErrorManager::GetInstance().add(APIError::InvalidNeoDevice);
return; return;
} }
icsneo::DiscardErrors(icsneo::ErrorFilter((icsneo::Device*)device->device)); if(device == nullptr)
icsneo::DiscardErrors(nullptr); // Discard errors not associated with a device
else
icsneo::DiscardErrors(device->device);
} }
void icsneo_setErrorLimit(size_t newLimit) { void icsneo_setErrorLimit(size_t newLimit) {