#include <uabase/qualifiedname.h>
#include <uabase/identifiers.h>
#include <uabase/structure/range.h>
#include "custom_provider_store.h"
struct custom_values {
uint32_t value;
};
static struct custom_values g_custom_provider_values[3];
int custom_store_set_initial_value(unsigned int idx, uint32_t value) {
if (idx >=
countof(g_custom_provider_values))
return -1;
g_custom_provider_values[idx].value = value;
g_custom_provider_values[idx].eu_range.
high = 0;
g_custom_provider_values[idx].eu_range.low = 0;
return 0;
}
int custom_store_set_range(unsigned int idx, uint32_t low, uint32_t high)
{
if (idx >=
countof(g_custom_provider_values))
return -1;
g_custom_provider_values[idx].eu_range.low = low;
g_custom_provider_values[idx].eu_range.high = high;
return 0;
}
void custom_store_get_value(
void *store,
ua_node_t node,
unsigned int idx,
bool source_ts,
struct ua_indexrange *range,
unsigned int num_ranges,
struct ua_datavalue *result)
{
int ret;
if (idx >=
countof(g_custom_provider_values)) {
return;
}
if (num_ranges > 0) {
return;
}
if (ret < 0) {
return;
}
ua_qualifiedname_attach_const(&eurange, 0, "EURange");
if (ua_qualifiedname_compare(&eurange, &browsename) == 0) {
if (ret < 0) {
goto out;
}
} else {
}
out:
ua_qualifiedname_clear(&browsename);
}
{
uint32_t newval;
}
}
newval = value->
value.value.ui32;
if (newval > g_custom_provider_values[idx].eu_range.
high ||
newval < g_custom_provider_values[idx].eu_range.low) {
}
g_custom_provider_values[idx].value = newval;
return 0;
}