|
|
@@ -64,36 +64,42 @@ static s16_t sysinfo_get_value(const struct snmp_scalar_array_node_def *node, vo
|
|
|
char *var = NULL;
|
|
|
s16_t var_len;
|
|
|
char buff[100]= {0};
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
+ paras_data_t *p=paras_get();
|
|
|
switch(node->oid)
|
|
|
{
|
|
|
case 1:
|
|
|
{
|
|
|
- sprintf(buff,"%d",0);
|
|
|
+ sprintf(buff,"GCG-GD32F427-%d",p->cas.addr);
|
|
|
}
|
|
|
break;
|
|
|
case 2:
|
|
|
{
|
|
|
- sprintf(buff,"%s","smart_pdu");
|
|
|
+ sprintf(buff,"%s",p->prod.name);
|
|
|
}
|
|
|
break;
|
|
|
case 3:
|
|
|
{
|
|
|
- sprintf(buff,"%s","DC");
|
|
|
+ sprintf(buff,"%s",(p->prod.type == 0) ? "AC-AC" :
|
|
|
+ (p->prod.type == 1) ? "DC-DC" :
|
|
|
+ (p->prod.type == 3) ? "AC3-AC3" :
|
|
|
+ ((p->prod.type == 4) || (p->prod.type == 5)) ? "AC3-AC1" :
|
|
|
+ (p->prod.type == 6) ? "AC3-AC2" : "Other");
|
|
|
}
|
|
|
break;
|
|
|
case 4:
|
|
|
{
|
|
|
- sprintf(buff,"%s","SN1235");
|
|
|
+ sprintf(buff,"%s",p->prod.pnumber);
|
|
|
}
|
|
|
break;
|
|
|
case 5:
|
|
|
{
|
|
|
- sprintf(buff,"%d",12);
|
|
|
+ sprintf(buff,"%d",all->chs);
|
|
|
}
|
|
|
break;
|
|
|
case 6:
|
|
|
{
|
|
|
- sprintf(buff,"%d",7);
|
|
|
+ sprintf(buff,"%d",3);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -115,43 +121,43 @@ static s16_t total_get_value(const struct snmp_scalar_array_node_def *node, void
|
|
|
char *var = NULL;
|
|
|
s16_t var_len;
|
|
|
char buff[100]= {0};
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
uint8_t id = 0;
|
|
|
switch(node->oid)
|
|
|
{
|
|
|
case SCALAR_VOLTAGE:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].voltage);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.voltage);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_CURRENT:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].current);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.current);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_CONSUMEPTION:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].consump);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.consump);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_POWER_FACTOR:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].factor);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.factor);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_PACTIVE_POWER:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].power);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.power);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_REACTIVE_POWER:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].reactive);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.reactive_power);
|
|
|
}
|
|
|
break;
|
|
|
case SCALAR_APPARENT_POWER:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].active);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.app_power);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -211,99 +217,6 @@ typedef struct thr_sensor_data{
|
|
|
}thr_s_t;
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-static p_data_t p_data[POWER_VALUE]={
|
|
|
- {
|
|
|
- .id = 1,
|
|
|
- .name = "smart_pdu",
|
|
|
- .status = 1,
|
|
|
- .v=220.0,
|
|
|
- .i = 15.3,
|
|
|
- .f = 48.95,
|
|
|
- .c = 20.14,
|
|
|
- .fa = 0.89,
|
|
|
- .p = 480.12,
|
|
|
- .r_p = 520.45,
|
|
|
- .a_p = 600.12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 2,
|
|
|
- .name = "smart_pdu",
|
|
|
- .status = 1,
|
|
|
- .v=218.0,
|
|
|
- .i = 15.3,
|
|
|
- .f = 49.95,
|
|
|
- .c = 20.14,
|
|
|
- .fa = 0.89,
|
|
|
- .p = 480.12,
|
|
|
- .r_p = 520.45,
|
|
|
- .a_p = 600.12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 3,
|
|
|
- .name = "smart_pdu",
|
|
|
- .status = 1,
|
|
|
- .v=219.0,
|
|
|
- .i = 9.3,
|
|
|
- .f = 48.95,
|
|
|
- .c = 20.14,
|
|
|
- .fa = 0.89,
|
|
|
- .p = 100.12,
|
|
|
- .r_p = 230.45,
|
|
|
- .a_p = 460.12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 4,
|
|
|
- .name = "smart_pdu",
|
|
|
- .status = 0,
|
|
|
- .v=220.0,
|
|
|
- .i = 15.3,
|
|
|
- .f = 48.95,
|
|
|
- .c = 20.14,
|
|
|
- .fa = 0.89,
|
|
|
- .p = 480.12,
|
|
|
- .r_p = 520.45,
|
|
|
- .a_p = 600.12,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static thr_s_t p_thr_s[POWER_VALUE] = {
|
|
|
- {
|
|
|
- .id = 1,
|
|
|
- .name = "sers_th1",
|
|
|
- .val1_up = 23,
|
|
|
- .val2_up = 32,
|
|
|
- .val1_down = 11,
|
|
|
- .val2_down = 12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 2,
|
|
|
- .name = "sers_th2",
|
|
|
- .val1_up = 23,
|
|
|
- .val2_up = 32,
|
|
|
- .val1_down = 11,
|
|
|
- .val2_down = 12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 3,
|
|
|
- .name = "sers_th3",
|
|
|
- .val1_up = 23,
|
|
|
- .val2_up = 32,
|
|
|
- .val1_down = 11,
|
|
|
- .val2_down = 12,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 4,
|
|
|
- .name = "sers_th4",
|
|
|
- .val1_up = 23,
|
|
|
- .val2_up = 32,
|
|
|
- .val1_down = 11,
|
|
|
- .val2_down = 12,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
static struct snmp_oid_range th_table_oid_ranges[] = {
|
|
|
{1, POWER_VALUE},
|
|
|
};
|
|
|
@@ -313,87 +226,6 @@ static struct snmp_oid_range th_sensor_oid_ranges[] = {
|
|
|
};
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-static p_alarm_t p_a_data[POWER_VALUE]={
|
|
|
- {
|
|
|
- .id = 1,
|
|
|
- .type = 3,
|
|
|
- .alarm_info="voltage alarm!!!",
|
|
|
- .alarm_action = 0,
|
|
|
- .alarm_action_para = 4,
|
|
|
- .date = "2052.12.20",
|
|
|
- .time = "12:30:47",
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 2,
|
|
|
- .type = 2,
|
|
|
- .alarm_info="current alarm!!!",
|
|
|
- .alarm_action = 1,
|
|
|
- .alarm_action_para = 2,
|
|
|
- .date = "2002-11-20",
|
|
|
- .time = "10:30:47",
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 3,
|
|
|
- .type = 1,
|
|
|
- .alarm_info="power alarm!!!",
|
|
|
- .alarm_action = 3,
|
|
|
- .alarm_action_para = 6,
|
|
|
- .date = "2012-11-20",
|
|
|
- .time = "10:59:47",
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 4,
|
|
|
- .type = 4,
|
|
|
- .alarm_info="consumer alarm!!!",
|
|
|
- .alarm_action = 3,
|
|
|
- .alarm_action_para = 6,
|
|
|
- .date = "2012-11-20",
|
|
|
- .time = "10:59:47",
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-static thr_d_t p_t_data[POWER_VALUE]=
|
|
|
-{
|
|
|
- {
|
|
|
- .id = 1,
|
|
|
- .name="thrould",
|
|
|
- .v_max = 250.00,
|
|
|
- .v_min = 180.00,
|
|
|
- .i_max = 50.00,
|
|
|
- .p_max = 20000.00,
|
|
|
- .c_max = 10000,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 2,
|
|
|
- .name="thrould",
|
|
|
- .v_max = 250.00,
|
|
|
- .v_min = 180.00,
|
|
|
- .i_max = 50.00,
|
|
|
- .p_max = 20000.00,
|
|
|
- .c_max = 10000,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 3,
|
|
|
- .name="thrould",
|
|
|
- .v_max = 250.00,
|
|
|
- .v_min = 180.00,
|
|
|
- .i_max = 50.00,
|
|
|
- .p_max = 20000.00,
|
|
|
- .c_max = 10000,
|
|
|
- },
|
|
|
- {
|
|
|
- .id = 4,
|
|
|
- .name="thrould",
|
|
|
- .v_max = 250.00,
|
|
|
- .v_min = 180.00,
|
|
|
- .i_max = 50.00,
|
|
|
- .p_max = 20000.00,
|
|
|
- .c_max = 10000,
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
static s16_t thr_s_get_info(struct snmp_node_instance *instance, void *value)
|
|
|
{
|
|
|
u32_t row = instance->reference.u32;
|
|
|
@@ -480,7 +312,7 @@ static snmp_err_t thr_s_set_value(struct snmp_node_instance *instance,u16_t len,
|
|
|
case COLUMN_PDUSENSORLIMITVALUE1UP:
|
|
|
{
|
|
|
sensor->data[row-1].val[0].thr.max = (val/100.0);
|
|
|
- p->sensor[row-1].th_max_1 = val;
|
|
|
+ p->sensor.sens[row-1].th_max_1 = val;
|
|
|
if(val)
|
|
|
{
|
|
|
sensor->data[row-1].val[0].thr.en.th_sen_max_en = 1;
|
|
|
@@ -493,7 +325,7 @@ static snmp_err_t thr_s_set_value(struct snmp_node_instance *instance,u16_t len,
|
|
|
case COLUMN_PDUSENSORLIMITVALUE2UP:
|
|
|
{
|
|
|
sensor->data[row-1].val[1].thr.max = (val/100.0);
|
|
|
- p->sensor[row-1].th_max_2 = val;
|
|
|
+ p->sensor.sens[row-1].th_max_2 = val;
|
|
|
if(val)
|
|
|
{
|
|
|
sensor->data[row-1].val[1].thr.en.th_sen_max_en = 1;
|
|
|
@@ -506,7 +338,7 @@ static snmp_err_t thr_s_set_value(struct snmp_node_instance *instance,u16_t len,
|
|
|
case COLUMN_PDUSENSORLIMITVALUE1DOWN:
|
|
|
{
|
|
|
sensor->data[row-1].val[0].thr.min = (val/100.0);
|
|
|
- p->sensor[row-1].th_min_1 = val;
|
|
|
+ p->sensor.sens[row-1].th_min_1 = val;
|
|
|
if(val)
|
|
|
{
|
|
|
sensor->data[row-1].val[0].thr.en.th_sen_min_en = 1;
|
|
|
@@ -519,7 +351,7 @@ static snmp_err_t thr_s_set_value(struct snmp_node_instance *instance,u16_t len,
|
|
|
case COLUMN_PDUSENSORLIMITVALUE2DOWN:
|
|
|
{
|
|
|
sensor->data[row-1].val[1].thr.min = (val/100.0);
|
|
|
- p->sensor[row-1].th_min_2 = val;
|
|
|
+ p->sensor.sens[row-1].th_min_2 = val;
|
|
|
if(val)
|
|
|
{
|
|
|
sensor->data[row-1].val[1].thr.en.th_sen_min_en = 1;
|
|
|
@@ -591,7 +423,7 @@ static s16_t thr_s_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
|
|
|
static s16_t thr_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
u32_t row = instance->reference.u32;
|
|
|
u32_t col = SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id);
|
|
|
char buff[50]= {0};
|
|
|
@@ -610,27 +442,27 @@ static s16_t thr_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELCURRENTLIMITUP:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].thr.c_upper/10.0));
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].thr.c_upper));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELVOLTAGELIMITUP:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].thr.v_upper/10.0));
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].thr.v_upper));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELVOLTAGELIMITDOWN:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].thr.v_lower/10.0));
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].thr.v_lower));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERLIMITUP:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].thr.p_upper/10.0));
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].thr.p_upper));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELCONSUMPTIONLIMITUP:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].thr.w_upper/10.0));
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].thr.w_upper));
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -684,14 +516,12 @@ static s16_t alarm_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
case COLUMN_PDUALARMDATE:
|
|
|
{
|
|
|
snprintf(buff,10,"%s",info->date);
|
|
|
- //sprintf(buff,"%s",p_a_data[row-1].date);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUALARMTIME:
|
|
|
{
|
|
|
char * _info = &(info->date[11]);
|
|
|
snprintf(buff,8,"%s",_info);
|
|
|
- // sprintf(buff,"%s",p_a_data[row-1].time);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -707,8 +537,8 @@ static s16_t alarm_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
|
|
|
static snmp_err_t power_get_instance(const u32_t *column, const u32_t *row_oid, u8_t row_oid_len, struct snmp_node_instance *cell_instance)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
- th_table_oid_ranges[0].max = all->chs-1;
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
+ th_table_oid_ranges[0].max = all->chs;
|
|
|
if (!snmp_oid_in_range(row_oid, row_oid_len, th_table_oid_ranges, LWIP_ARRAYSIZE(th_table_oid_ranges)))
|
|
|
return SNMP_ERR_NOSUCHINSTANCE;
|
|
|
cell_instance->reference.u32 = row_oid[0];
|
|
|
@@ -769,8 +599,8 @@ static snmp_err_t power_get_next_instance(const u32_t *column, struct snmp_obj_i
|
|
|
snmp_next_oid_init(&state, row_oid->id, row_oid->len, &next_oid, 1);
|
|
|
|
|
|
//power_data_get(&snmp_smart.all);
|
|
|
- power_all_t *all = power_get_all();
|
|
|
- for (i = 0; i < all->chs-1; i++)
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
+ for (i = 0; i < all->chs; i++)
|
|
|
{
|
|
|
u32_t test_oid = i + 1;
|
|
|
snmp_next_oid_check(&state, &test_oid, 1, NULL);
|
|
|
@@ -802,7 +632,7 @@ static snmp_err_t power_get_next_instance(const u32_t *column, struct snmp_obj_i
|
|
|
{
|
|
|
snmp_oid_assign(row_oid, state.next_oid, state.next_oid_len);
|
|
|
cell_instance->reference.u32 = *state.next_oid; /* 下个节点行OID */
|
|
|
- cell_instance->reference.u32++;
|
|
|
+ //cell_instance->reference.u32++;
|
|
|
}
|
|
|
return SNMP_ERR_NOERROR;
|
|
|
}
|
|
|
@@ -840,7 +670,7 @@ static snmp_err_t get_next_instance(const u32_t *column, struct snmp_obj_id *row
|
|
|
|
|
|
static s16_t alarm_power_get(struct snmp_node_instance *instance, void *value)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
u32_t row = instance->reference.u32;
|
|
|
u32_t col = SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id);
|
|
|
switch (col)
|
|
|
@@ -852,27 +682,27 @@ static s16_t alarm_power_get(struct snmp_node_instance *instance, void *value)
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERALARMVOLTAGEUP:
|
|
|
{
|
|
|
- *(s32_t *)value = all->pch[row-1].alarm.l1_v_upper;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.alarm.l1_v_upper;
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERALARMVOLTAGEDOWN:
|
|
|
{
|
|
|
- *(s32_t *)value = all->pch[row-1].alarm.l1_v_lower;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.alarm.l1_v_lower;
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERALARMCURRENTUP:
|
|
|
{
|
|
|
- *(s32_t *)value = all->pch[row-1].alarm.l1_c_upper;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.alarm.l1_c_upper;
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERALARMPOWERUP:
|
|
|
{
|
|
|
- *(s32_t *)value = all->pch[row-1].alarm.l1_p_upper;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.alarm.l1_p_upper;
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERALARMCONSUMPTIONUP:
|
|
|
{
|
|
|
- *(s32_t *)value = all->pch[row-1].alarm.l1_w_upper;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.alarm.l1_w_upper;
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -925,14 +755,17 @@ static s16_t alarm_sensor_get(struct snmp_node_instance *instance, void *value)
|
|
|
|
|
|
static s16_t power_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
u32_t row = instance->reference.u32;
|
|
|
u32_t col = SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id);
|
|
|
char buff[100]= {0};
|
|
|
uint8_t id = 0;
|
|
|
- if(all->ttl.type == PDU_AC_I3O2 || all->ttl.type == PDU_AC_I3O3 || all->ttl.type == PDU_AC_I3O1 || all->ttl.type == PDU_AC_I3O1_H)
|
|
|
+ if( all->power_type == PDU_AC_I3O1 || all->power_type == PDU_AC_I3O1_H)
|
|
|
+ {
|
|
|
+ id = 0;
|
|
|
+ }else if(all->power_type == PDU_AC_I3O2)
|
|
|
{
|
|
|
- id = all->pch[row-1].info.ph_id - 1;
|
|
|
+ id = all->pch[row-1].info.pse.ph2.ph_l - 1;
|
|
|
}
|
|
|
switch (col)
|
|
|
{
|
|
|
@@ -951,56 +784,49 @@ static s16_t power_get_value(struct snmp_node_instance *instance, void *value)
|
|
|
{
|
|
|
//sprintf(buff,"%d",p_data[row].status);
|
|
|
//*(s32_t *)value = p_data[row-1].status;
|
|
|
- *(s32_t *)value = all->pch[row-1].status;
|
|
|
+ *(s32_t *)value = all->pch[row-1].info.status;
|
|
|
return 4;
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELVOLTAGE:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].voltage)/100.0);
|
|
|
+ sprintf(buff,"%.2f",(float)all->pch[row-1].power[id].voltage);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELCURRENT:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].current)/100.0);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].current));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELFREQUENCY:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].freq)/100.0);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].freq));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELCONSUMPTION:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].consump)/100.0);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].consump));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERFACTOR:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].factor)/100.0);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].factor));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPACTIVEPOWER:
|
|
|
{
|
|
|
- sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].power)/100.0);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].power));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELREACTIVEPOWER:
|
|
|
{
|
|
|
- float reactive = 0.0;
|
|
|
- if(all->pch[row-1].power[id].power > 0)
|
|
|
- {
|
|
|
- reactive = (float)(all->pch[row-1].power[id].power) / all->pch[row-1].power[id].factor - ((float)all->pch[row-1].power[id].power/100.0);
|
|
|
- }
|
|
|
- sprintf(buff,"%.2f",reactive);
|
|
|
+
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].reactive_power));
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELAPPARENTPOWER:
|
|
|
{
|
|
|
- float app_power = 0.0;
|
|
|
- if(all->pch[row-1].power[id].power > 0)
|
|
|
- app_power = (float)(all->pch[row-1].power[id].power) / all->pch[row-1].power[id].factor;
|
|
|
- sprintf(buff,"%.2f",app_power);
|
|
|
+ sprintf(buff,"%.2f",((float)all->pch[row-1].power[id].app_power));
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -1019,16 +845,19 @@ static snmp_err_t set_test(struct snmp_node_instance *instance, u16_t len, void
|
|
|
|
|
|
static snmp_err_t power_set_value (struct snmp_node_instance *instance, u16_t len, void *value)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
u32_t row = instance->reference.u32;
|
|
|
u32_t col = SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id);
|
|
|
+ if(row == 0)
|
|
|
+ return SNMP_ERR_NOERROR;
|
|
|
+ int ch = row -1;
|
|
|
+ power_ch_new_t *pch = &all->pch[ch];
|
|
|
switch(col)
|
|
|
{
|
|
|
case COLUMN_PDUCHANNELSTATUS:
|
|
|
{
|
|
|
- //p_data[row-1].status = *(uint32_t*)value;
|
|
|
- all->pch[row].status = *(uint32_t*)value;
|
|
|
- power_set_ch_sw_n(&all->pch[row]);
|
|
|
+ uint32_t val = *(uint32_t*)value;
|
|
|
+ all->set_status(pch->info.addr,pch->info.sch,val);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -1040,49 +869,42 @@ static snmp_err_t thr_set_value(struct snmp_node_instance *instance,u16_t len, v
|
|
|
{
|
|
|
u32_t row = instance->reference.u32;
|
|
|
u32_t col = SNMP_TABLE_GET_COLUMN_FROM_OID(instance->instance_oid.id);
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+ if(row == 0)
|
|
|
+ return SNMP_ERR_NOERROR;
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
+ thr_t th = all->pch[row-1].thr;
|
|
|
switch(col)
|
|
|
{
|
|
|
case COLUMN_PDUCHANNELCURRENTLIMITUP:
|
|
|
{
|
|
|
- all->pch[row].thr.c_upper = (float)atof((char *)value) * 100;
|
|
|
- //p_t_data[row-1].i_max = (float)atof((char *)value);
|
|
|
- //all->pch[row-1]
|
|
|
- power_set_threshold(&all->pch[row]);
|
|
|
+ th.c_upper = (float)atof((char *)value);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELVOLTAGELIMITUP:
|
|
|
{
|
|
|
- //p_t_data[row-1].v_max = (float)atof((char *)value);
|
|
|
- all->pch[row].thr.v_upper = (float)atof((char *)value) * 100;
|
|
|
- power_set_threshold(&all->pch[row]);
|
|
|
+ th.v_upper = (float)atof((char *)value);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELVOLTAGELIMITDOWN:
|
|
|
{
|
|
|
- all->pch[row].thr.v_lower = (float)atof((char *)value) * 100;
|
|
|
- power_set_threshold(&all->pch[row]);
|
|
|
- //p_t_data[row-1].v_min = (float)atof((char *)value);
|
|
|
- //all->pch[row-1].thr.v_upper = (float)atof((char *)value) * 10;
|
|
|
+ th.v_lower = (float)atof((char *)value);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELPOWERLIMITUP:
|
|
|
{
|
|
|
- //p_t_data[row-1].p_max = (float)atof((char *)value);
|
|
|
- all->pch[row].thr.p_upper = (float)atof((char *)value) * 100;
|
|
|
- power_set_threshold(&all->pch[row]);
|
|
|
+
|
|
|
+ th.p_upper = (float)atof((char *)value);
|
|
|
}
|
|
|
break;
|
|
|
case COLUMN_PDUCHANNELCONSUMPTIONLIMITUP:
|
|
|
{
|
|
|
- //p_t_data[row-1].c_max = (float)atof((char *)value);
|
|
|
- all->pch[row].thr.w_upper = (float)atof((char *)value) * 100;
|
|
|
- power_set_threshold(&all->pch[row]);
|
|
|
+ th.w_upper = (float)atof((char *)value);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
return SNMP_ERR_INCONSISTENTNAME;
|
|
|
}
|
|
|
+ all->set_thr(all->pch[row-1].info.addr,all->pch[row-1].info.sch,&th);
|
|
|
return SNMP_ERR_NOERROR;
|
|
|
}
|
|
|
|
|
|
@@ -1188,30 +1010,31 @@ const struct snmp_scalar_array_node sysinfo_scalars = SNMP_SCALAR_CREATE_ARRAY_N
|
|
|
|
|
|
static s16_t get_total_scalar_value(struct snmp_node_instance *instance , void* data)
|
|
|
{
|
|
|
- power_all_t *all = power_get_all();
|
|
|
+
|
|
|
+ power_handle_new_t *all = power_get_all();
|
|
|
char buff[100] = {0};
|
|
|
switch(instance->node->oid)
|
|
|
{
|
|
|
case SCALAR_VOLTAGE:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].voltage);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.voltage);
|
|
|
break;
|
|
|
case SCALAR_CURRENT:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].current);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.current);
|
|
|
break;
|
|
|
case SCALAR_CONSUMEPTION:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].consump);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.consump);
|
|
|
break;
|
|
|
case SCALAR_POWER_FACTOR:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].factor);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.factor);
|
|
|
break;
|
|
|
case SCALAR_PACTIVE_POWER:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].power);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.power);
|
|
|
break;
|
|
|
case SCALAR_REACTIVE_POWER:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].reactive);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.reactive_power);
|
|
|
break;
|
|
|
case SCALAR_APPARENT_POWER:
|
|
|
- sprintf(buff,"%.2f",all->ttl.total[0].active);
|
|
|
+ sprintf(buff,"%.2f",all->total.all.app_power);
|
|
|
break;
|
|
|
default:
|
|
|
return 0;
|
|
|
@@ -1326,15 +1149,22 @@ const struct snmp_mib mib2_th_dev = SNMP_MIB_CREATE(thr_base_oid, &snmp_mib2_thr
|
|
|
|
|
|
static const struct snmp_mib *dev_mibs[] = {&mib2, &mib2_dev,&mib2_th_dev};
|
|
|
|
|
|
+AlarmTrapinfo data;
|
|
|
|
|
|
|
|
|
-
|
|
|
-void snmp_power_alarm_trap(AlarmTrapinfo *data)
|
|
|
+void snmp_alarm_trap(AlarmTrapinfo *data, uint8_t flag)
|
|
|
{
|
|
|
struct snmp_varbind vb={0},vb1={0},vb2={0},vb3={0};
|
|
|
int a= 1,b=2,c=3;
|
|
|
-
|
|
|
- const u32_t oid_1[]={1,3,6,1,4,1,2024,2,1};
|
|
|
+ u32_t oid_1[9] = {1,3,6,1,4,1,2024,2};
|
|
|
+ if(flag == 0)
|
|
|
+ {
|
|
|
+ oid_1[8] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ oid_1[8] = 2;
|
|
|
+ }
|
|
|
+ //const u32_t oid_1[]={1,3,6,1,4,1,2024,2,1};
|
|
|
const u32_t pduAlarmID_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,2,data->ID};
|
|
|
const u32_t pduAlarmContext_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,3,data->ID};
|
|
|
const u32_t pduAlarmDate_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,6,data->ID};
|
|
|
@@ -1374,76 +1204,6 @@ void snmp_power_alarm_trap(AlarmTrapinfo *data)
|
|
|
|
|
|
}
|
|
|
|
|
|
-void snmp_sensor_alarm_trap(AlarmTrapinfo *data)
|
|
|
-{
|
|
|
- struct snmp_varbind vb={0},vb1={0},vb2={0},vb3={0};
|
|
|
- int a= 1,b=2,c=3;
|
|
|
-
|
|
|
- const u32_t oid_1[]={1,3,6,1,4,1,2024,2,2};
|
|
|
- const u32_t pduAlarmID_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,2, data->ID};
|
|
|
- const u32_t pduAlarmContext_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,3, data->ID};
|
|
|
- const u32_t pduAlarmDate_oid[] = { 1,3,6,1,4,1,2024,1,6,1,1,6,data->ID};
|
|
|
-
|
|
|
- snmp_oid_assign(&vb.oid, oid_1, LWIP_ARRAYSIZE(oid_1));
|
|
|
- snmp_oid_assign(&vb1.oid, pduAlarmID_oid, LWIP_ARRAYSIZE(pduAlarmID_oid));
|
|
|
- snmp_oid_assign(&vb2.oid, pduAlarmContext_oid, LWIP_ARRAYSIZE(pduAlarmContext_oid));
|
|
|
- snmp_oid_assign(&vb3.oid, pduAlarmDate_oid, LWIP_ARRAYSIZE(pduAlarmDate_oid));
|
|
|
-
|
|
|
- vb.type = SNMP_ASN1_TYPE_INTEGER;
|
|
|
- vb.value = (void*)&(data->ID);;
|
|
|
- vb.value_len = 4;
|
|
|
-
|
|
|
- vb1.type = SNMP_ASN1_TYPE_INTEGER;
|
|
|
- vb1.value = (void*)&data->Alarmid;
|
|
|
- vb1.value_len = 4;
|
|
|
-
|
|
|
- vb2.type = SNMP_ASN1_TYPE_OCTET_STRING;
|
|
|
- vb2.value = (void*)&data->AlarmContext;
|
|
|
- vb2.value_len = strlen(data->AlarmContext);
|
|
|
-
|
|
|
- vb3.type = SNMP_ASN1_TYPE_OCTET_STRING;
|
|
|
- vb3.value = (void*)&data->AlarmDate;
|
|
|
- vb3.value_len = strlen(data->AlarmDate);
|
|
|
-
|
|
|
- vb.next = &vb1;
|
|
|
- vb1.next = &vb2;
|
|
|
- vb2.next = &vb3;
|
|
|
- vb3.prev = &vb2;
|
|
|
- vb2.prev = &vb1;
|
|
|
- vb1.prev = &vb;
|
|
|
-
|
|
|
- snmp_send_trap_specific(SNMP_GENTRAP_COLDSTART, &vb);
|
|
|
-}
|
|
|
-
|
|
|
-AlarmTrapinfo data = {
|
|
|
- 2,
|
|
|
- 1,
|
|
|
- "dasdasdasdas",
|
|
|
- "dasdasdjkhasdjia"
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-//void *snmp_thread(void *args)
|
|
|
-//{
|
|
|
-// while(1)
|
|
|
-// {
|
|
|
-// pthread_mutex_lock(&snmp_smart.mutex);
|
|
|
-// while(pthread_cond_wait(&snmp_smart.cond, &snmp_smart.mutex));
|
|
|
-// if(paras_get()->snmp.trapmode == 1)
|
|
|
-// snmp_power_alarm_trap(&data);
|
|
|
-//// system("snmp");
|
|
|
-//
|
|
|
-// pthread_mutex_unlock(&snmp_smart.mutex);
|
|
|
-// }
|
|
|
-//}
|
|
|
-
|
|
|
-
|
|
|
-//void send_snmp_tarp(void)
|
|
|
-//{
|
|
|
-// pthread_mutex_lock(&snmp_smart.mutex);
|
|
|
-// pthread_cond_signal(&snmp_smart.cond);
|
|
|
-// pthread_mutex_unlock(&snmp_smart.mutex);
|
|
|
-//}
|
|
|
|
|
|
|
|
|
void cmd_snmp_test(int argc, char **argv)
|
|
|
@@ -1460,12 +1220,8 @@ void cmd_snmp_test(int argc, char **argv)
|
|
|
vb.value_len = strlen(str);
|
|
|
|
|
|
snmp_send_trap_specific(0, &vb);
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
- snmp_power_alarm_trap(&data);
|
|
|
-
|
|
|
+ snmp_power_alarm_trap(&data,0);
|
|
|
+#endif
|
|
|
// snmp_send_trap_generic(SNMP_GENTRAP_COLDSTART);
|
|
|
}
|
|
|
MSH_CMD_EXPORT_ALIAS(cmd_snmp_test, snmp, snmp agent test);
|
|
|
@@ -1477,46 +1233,20 @@ void netif_event_callback(struct netif *netif) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+static char read_only[32] = {0};
|
|
|
+static char read_write[32] = {0};
|
|
|
+
|
|
|
static void mibs_init(void) {
|
|
|
- paras_data_t *para = paras_get();
|
|
|
- //snmp_v2c_enable(1);
|
|
|
- //snmp_v2c_enabled();
|
|
|
-// uint16_t len = 0;
|
|
|
-// len= strlen((const char *)snmp_smart.sysdescr);
|
|
|
-// snmp_mib2_set_sysdescr(snmp_smart.sysdescr, &len);
|
|
|
-//
|
|
|
-// len= strlen((const char *)snmp_smart.syscontact);
|
|
|
-// snmp_mib2_set_syscontact(snmp_smart.syscontact, &len, 0);
|
|
|
-//
|
|
|
-// len= strlen((const char *)snmp_smart.sysname);
|
|
|
-// snmp_mib2_set_sysname(snmp_smart.sysname, &len, 0);
|
|
|
-//
|
|
|
-// len= strlen((const char *)snmp_smart.syslocation);
|
|
|
-// snmp_mib2_set_syslocation(snmp_smart.syslocation, &len, 0);
|
|
|
-//
|
|
|
-// snmp_set_device_enterprise_oid(&snmp_smart.device_enterprose_oid);
|
|
|
-
|
|
|
-// pthread_mutex_init(&snmp_smart.mutex,NULL);
|
|
|
-// pthread_cond_init(&snmp_smart.cond,NULL);
|
|
|
-//
|
|
|
+ paras_data_t *para = paras_get();
|
|
|
|
|
|
snmp_set_auth_traps_enabled(SNMP_AUTH_TRAPS_DISABLED);
|
|
|
snmp_strap_set();
|
|
|
|
|
|
snmp_set_mibs(&dev_mibs[0], LWIP_ARRAYSIZE(dev_mibs));
|
|
|
- snmp_set_community("public");
|
|
|
- if(strncmp(para->snmp.publics,"public",strlen("public")))
|
|
|
- {
|
|
|
- snmp_set_community_write("public");
|
|
|
- }else
|
|
|
- {
|
|
|
- snmp_set_community_write("private");
|
|
|
- }
|
|
|
+ snmp_set_community(para->snmp.publics); //only read
|
|
|
+ snmp_set_community_write(para->snmp.privates); //read write
|
|
|
|
|
|
- //snmp_send_trap_specific();
|
|
|
|
|
|
-// pthread_create(&snmp_smart.id,NULL,snmp_thread,NULL);
|
|
|
- //pthread_detach(snmp_smart.id);
|
|
|
}
|
|
|
|
|
|
int snmp2_init(void)
|