|
@@ -22,8 +22,14 @@
|
|
|
#define REG_UPG_READ 1501
|
|
#define REG_UPG_READ 1501
|
|
|
#define REG_UPG_WRITE 1550
|
|
#define REG_UPG_WRITE 1550
|
|
|
|
|
|
|
|
-#define REG_UPG_JUMP 6330
|
|
|
|
|
-#define REG_BOARD_INFO 6331
|
|
|
|
|
|
|
+#define REG_UPG_JUMP_3 6330
|
|
|
|
|
+#define REG_BOARD_INFO_3 6331
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+#define REG_UPG_JUMP_S 5260
|
|
|
|
|
+#define REG_BOARD_INFO_S 4360
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
enum {
|
|
enum {
|
|
|
OFFLINE=0,
|
|
OFFLINE=0,
|
|
@@ -106,7 +112,7 @@ static int mb_write(Modbus_Manger *mm, uint16_t addr, uint16_t reg, void *data,
|
|
|
static void sw_to_info(int addr, board_info_t *info, switch_info_t *swinfo, int status)
|
|
static void sw_to_info(int addr, board_info_t *info, switch_info_t *swinfo, int status)
|
|
|
{
|
|
{
|
|
|
info->addr = addr;
|
|
info->addr = addr;
|
|
|
- info->brd_id = swinfo->id[0];
|
|
|
|
|
|
|
+ info->brd_id = swinfo->id[2];
|
|
|
info->channels = swinfo->channels;
|
|
info->channels = swinfo->channels;
|
|
|
info->status = status;
|
|
info->status = status;
|
|
|
|
|
|
|
@@ -126,18 +132,35 @@ static int board_upgrade_jump(Modbus_Manger* mm, int addr)
|
|
|
{
|
|
{
|
|
|
int r;
|
|
int r;
|
|
|
uint16_t tmp=1;
|
|
uint16_t tmp=1;
|
|
|
|
|
+ upg_handle_t *h=&uHandle;
|
|
|
|
|
+ if(h->dm->_globalDevInfo.product.pwr_type == SmartPDU_DC
|
|
|
|
|
+ || h->dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree)
|
|
|
|
|
+ {
|
|
|
|
|
+ r = mb_write(mm, addr, REG_UPG_JUMP_3, &tmp, sizeof(tmp), UPG_RW_TIMEOUT);
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ r = mb_write(mm, addr, REG_UPG_JUMP_S, &tmp, sizeof(tmp), UPG_RW_TIMEOUT);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- r = mb_write(mm, addr, REG_UPG_JUMP, &tmp, sizeof(tmp), UPG_RW_TIMEOUT);
|
|
|
|
|
return r;
|
|
return r;
|
|
|
}
|
|
}
|
|
|
static int board_get_info(Modbus_Manger* mm, int addr, switch_info_t *info)
|
|
static int board_get_info(Modbus_Manger* mm, int addr, switch_info_t *info)
|
|
|
{
|
|
{
|
|
|
int r;
|
|
int r;
|
|
|
- r = mb_read(mm, addr, REG_BOARD_INFO, info, sizeof(switch_info_t), UPG_RW_TIMEOUT);
|
|
|
|
|
- if(r==0) {
|
|
|
|
|
|
|
+ upg_handle_t *h=&uHandle;
|
|
|
|
|
+ if(h->dm->_globalDevInfo.product.pwr_type == SmartPDU_DC
|
|
|
|
|
+ || h->dm->_globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree)
|
|
|
|
|
+ {
|
|
|
|
|
+ r = mb_read(mm, addr, REG_BOARD_INFO_3, info, sizeof(switch_info_t), UPG_RW_TIMEOUT);
|
|
|
LOGD("___board %d ver: %s\n", addr, info->ver);
|
|
LOGD("___board %d ver: %s\n", addr, info->ver);
|
|
|
LOGD("___board %d date: %s\n", addr, info->date);
|
|
LOGD("___board %d date: %s\n", addr, info->date);
|
|
|
- }
|
|
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ r = mb_read(mm, addr, REG_BOARD_INFO_S, info, sizeof(switch_info_t), UPG_RW_TIMEOUT);
|
|
|
|
|
+ LOGD("___board %d ver: %s\n", addr, info->ver);
|
|
|
|
|
+ LOGD("___board %d date: %s\n", addr, info->date);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return r;
|
|
return r;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -449,7 +472,6 @@ int upg_board_all_update(void)
|
|
|
if(tmp->product_saddr>0) {
|
|
if(tmp->product_saddr>0) {
|
|
|
addr = tmp->product_saddr;
|
|
addr = tmp->product_saddr;
|
|
|
if(addr==addr2) continue;
|
|
if(addr==addr2) continue;
|
|
|
-
|
|
|
|
|
for(i=0; i<RETRY_MAX; i++) {
|
|
for(i=0; i<RETRY_MAX; i++) {
|
|
|
r = board_get_info(mm, addr, &swinfo);
|
|
r = board_get_info(mm, addr, &swinfo);
|
|
|
if(r==0) {
|
|
if(r==0) {
|