📄 eribld_aqpcs.c
字号:
cnd[6] = elrp->el_body.el_aqpcs.idreg == 0x21; cnd[7] = elrp->el_body.el_aqpcs.idreg == 0x22; cnd[8] = elrp->el_body.el_aqpcs.idreg == 0x23; cnd[9] = elrp->el_body.el_aqpcs.idreg == 0x24; cnd[10] = elrp->el_body.el_aqpcs.idreg == 0x25; cnd[11] = elrp->el_body.el_aqpcs.idreg == 0x31; cnd[12] = elrp->el_body.el_aqpcs.idreg == 0x32; cnd[13] = elrp->el_body.el_aqpcs.idreg == 0x41; cnd[14] = elrp->el_body.el_aqpcs.idreg == 0x42; cnd[15] = elrp->el_body.el_aqpcs.idreg == 0x51; cnd[16] = elrp->el_body.el_aqpcs.idreg == 0x52; cnd[17] = elrp->el_body.el_aqpcs.idreg == 0x53; cnd[18] = elrp->el_body.el_aqpcs.idreg == 0x54; cnd[19] = elrp->el_body.el_aqpcs.ricpem.ric.rcreg & 0x01; cnd[20] = elrp->el_body.el_aqpcs.ricpem.ric.rcreg & 0x02; cnd[21] = elrp->el_body.el_aqpcs.ricpem.ric.rcreg & 0x04; cnd[22] = elrp->el_body.el_aqpcs.ricpem.ric.rcreg & 0x08; cnd[23] = elrp->el_body.el_aqpcs.ricpem.ric.rcreg & 0x10; clear_sips(); sip[0] = DD$aqpcs_hwsrega_1; sip[1] = DD$aqpcs_hwsrega_2; sip[2] = DD$aqpcs_hwsrega_3; sip[3] = DD$aqpcs_hwsrega_4; sip[4] = DD$aqpcs_hwsrega_5; sip[5] = DD$aqpcs_hwsrega_6; sip[6] = DD$aqpcs_hwsrega_7; sip[7] = DD$aqpcs_hwsrega_8; sip[8] = 0; qualified_translate(PCS.ricpem.ric.hwsrega, qt_hwsrega); /* Hardware Status Register B */ os_std(&PCS.ricpem.ric.hwsregb, OS$gen_tiny, DD$aqpcs_hwsregb); clear_conditions(); cnd[1] = elrp->el_body.el_aqpcs.idreg == 0x11; cnd[2] = elrp->el_body.el_aqpcs.idreg == 0x12; cnd[3] = elrp->el_body.el_aqpcs.idreg == 0x13; cnd[4] = elrp->el_body.el_aqpcs.idreg == 0x14; cnd[5] = elrp->el_body.el_aqpcs.idreg == 0x15; cnd[6] = elrp->el_body.el_aqpcs.idreg == 0x21; cnd[7] = elrp->el_body.el_aqpcs.idreg == 0x22; cnd[8] = elrp->el_body.el_aqpcs.idreg == 0x23; cnd[9] = elrp->el_body.el_aqpcs.idreg == 0x24; cnd[10] = elrp->el_body.el_aqpcs.idreg == 0x25; cnd[11] = elrp->el_body.el_aqpcs.idreg == 0x31; cnd[12] = elrp->el_body.el_aqpcs.idreg == 0x32; cnd[13] = elrp->el_body.el_aqpcs.idreg == 0x41; cnd[14] = elrp->el_body.el_aqpcs.idreg == 0x42; cnd[15] = elrp->el_body.el_aqpcs.idreg == 0x51; cnd[16] = elrp->el_body.el_aqpcs.idreg == 0x52; cnd[17] = elrp->el_body.el_aqpcs.idreg == 0x53; cnd[18] = elrp->el_body.el_aqpcs.idreg == 0x54; clear_sips(); sip[0] = DD$aqpcs_hwsregb_1; sip[1] = DD$aqpcs_hwsregb_2; sip[2] = DD$aqpcs_hwsregb_3; sip[3] = DD$aqpcs_hwsregb_4; sip[4] = DD$aqpcs_hwsregb_5; sip[5] = DD$aqpcs_hwsregb_6; sip[6] = DD$aqpcs_hwsregb_7; sip[7] = DD$aqpcs_hwsregb_8; sip[8] = 0; qualified_translate(PCS.ricpem.ric.hwsregb, qt_hwsregb); /* Hardware Status Register C */ os_std(&PCS.ricpem.ric.hwsregc, OS$gen_tiny, DD$aqpcs_hwsregc); clear_conditions(); cnd[1] = elrp->el_body.el_aqpcs.idreg == 0x51; cnd[2] = elrp->el_body.el_aqpcs.idreg == 0x52; cnd[3] = elrp->el_body.el_aqpcs.idreg == 0x53; cnd[4] = elrp->el_body.el_aqpcs.idreg == 0x54; clear_sips(); sip[0] = DD$aqpcs_hwsregc_1; sip[1] = DD$aqpcs_hwsregc_2; sip[2] = DD$aqpcs_hwsregc_3; sip[3] = DD$aqpcs_hwsregc_4; sip[4] = DD$aqpcs_hwsregc_5; sip[5] = DD$aqpcs_hwsregc_6; sip[6] = DD$aqpcs_hwsregc_7; sip[7] = DD$aqpcs_hwsregc_8; sip[8] = 0; qualified_translate(PCS.ricpem.ric.hwsregc, qt_hwsregc); /* Hardware Status Register D */ os_std(&PCS.ricpem.ric.hwsregd, OS$gen_tiny, DD$aqpcs_hwsregd); clear_conditions(); cnd[1] = elrp->el_body.el_aqpcs.idreg == 0x51; cnd[2] = elrp->el_body.el_aqpcs.idreg == 0x52; cnd[3] = elrp->el_body.el_aqpcs.idreg == 0x53; cnd[4] = elrp->el_body.el_aqpcs.idreg == 0x54; clear_sips(); sip[0] = DD$aqpcs_hwsregd_1; sip[1] = DD$aqpcs_hwsregd_2; sip[2] = DD$aqpcs_hwsregd_3; sip[3] = DD$aqpcs_hwsregd_4; sip[4] = DD$aqpcs_hwsregd_5; sip[5] = DD$aqpcs_hwsregd_6; sip[6] = DD$aqpcs_hwsregd_7; sip[7] = DD$aqpcs_hwsregd_8; sip[8] = 0; qualified_translate(PCS.ricpem.ric.hwsregd, qt_hwsregd); os_std(&PCS.ricpem.ric.hwsrege, OS$gen_tiny, DD$aqpcs_hwsrege); os_std(&PCS.ricpem.ric.hwsregf, OS$gen_tiny, DD$aqpcs_hwsregf); /* Power Fail Register */ os_std(&PCS.ricpem.ric.pfreg_1, OS$gen_short, DD$aqpcs_pfreg); clear_conditions(); /* cnd[1] follows cnd[20] */ cnd[2] = (elrp->el_body.el_aqpcs.ricpem.ric.pfreg_1&0x8) == 0x0; cnd[3] = elrp->el_body.el_aqpcs.idreg == 0x11; cnd[4] = elrp->el_body.el_aqpcs.idreg == 0x12; cnd[5] = elrp->el_body.el_aqpcs.idreg == 0x13; cnd[6] = elrp->el_body.el_aqpcs.idreg == 0x14; cnd[7] = elrp->el_body.el_aqpcs.idreg == 0x15; cnd[8] = elrp->el_body.el_aqpcs.idreg == 0x21; cnd[9] = elrp->el_body.el_aqpcs.idreg == 0x22; cnd[10] = elrp->el_body.el_aqpcs.idreg == 0x23; cnd[11] = elrp->el_body.el_aqpcs.idreg == 0x24; cnd[12] = elrp->el_body.el_aqpcs.idreg == 0x25; cnd[13] = elrp->el_body.el_aqpcs.idreg == 0x31; cnd[14] = elrp->el_body.el_aqpcs.idreg == 0x32; cnd[15] = elrp->el_body.el_aqpcs.idreg == 0x41; cnd[16] = elrp->el_body.el_aqpcs.idreg == 0x42; cnd[17] = elrp->el_body.el_aqpcs.idreg == 0x51; cnd[18] = elrp->el_body.el_aqpcs.idreg == 0x52; cnd[19] = elrp->el_body.el_aqpcs.idreg == 0x53; cnd[20] = elrp->el_body.el_aqpcs.idreg == 0x54; cnd[1] = (cnd[3] || cnd[4] || cnd[5] || cnd[6] || cnd[7] || cnd[8] || cnd[9] || cnd[10] || cnd[11] || cnd[12] || cnd[13] || cnd[14] || cnd[15] || cnd[16] ) ; clear_sips(); sip[0] = DD$aqpcs_pfreg_1; sip[1] = DD$aqpcs_pfreg_2; sip[2] = DD$aqpcs_pfreg_3; sip[3] = DD$aqpcs_pfreg_4; sip[4] = DD$aqpcs_pfreg_5; sip[5] = DD$aqpcs_pfreg_6; sip[6] = DD$aqpcs_pfreg_7; sip[7] = DD$aqpcs_pfreg_8; sip[8] = 0; qualified_translate(PCS.ricpem.ric.pfreg_1|(PCS.ricpem.ric.pfreg_2<<8), qt_pfreg); /* scs register */ os_std(&PCS.ricpem.ric.scsreg, OS$gen_tiny, DD$aqpcs_scsreg); if( (PCS.idreg >= 0x11 && PCS.idreg <= 0x15) || (PCS.idreg >= 0x21 && PCS.idreg <= 0x25) || PCS.idreg == 0x31 || PCS.idreg == 0x32 || PCS.idreg == 0x41 || PCS.idreg == 0x42 ) os_std(&PCS.ricpem.ric.rcreg, OS$gen_tiny, DD$aqpcs_rcreg); if(format_type == 1){#define PF1 elrp->el_body.el_aqpcs.ricpem.ric.fmt.fmt1 os_std(&PF1.mgnreg, OS$gen_tiny, DD$aqpcs_mgnreg); os_std(&PF1.measure, OS$gen_short, DD$aqpcs_measure); os_std(&PF1.low, OS$gen_short, DD$aqpcs_low); os_std(&PF1.high, OS$gen_short, DD$aqpcs_high); os_std(&PF1.reg0cur, OS$gen_short, DD$aqpcs_reg0cur); os_std(&PF1.reg1cur, OS$gen_short, DD$aqpcs_reg1cur); os_std(&PF1.reg2cur, OS$gen_short, DD$aqpcs_reg2cur); os_std(&PF1.reg3cur, OS$gen_short, DD$aqpcs_reg3cur); os_std(&PF1.reg4cur, OS$gen_short, DD$aqpcs_reg4cur); unpackval("MEASURED VOLTAGE = %c%3d.%03d", PF1.measure, measure_str, DD$aqpcs_measure_1); unpackval("LOW LIMIT VOLTAGE = %c%3d.%03d", PF1.low, low_str, DD$aqpcs_low_1); unpackval("HIGH LIMIT VOLTAGE = %c%3d.%03d", PF1.high, high_str, DD$aqpcs_high_1); sprintf(reg0cur_str, "REG 0 CURRENT = %4d AMPS", PF1.reg0cur&0x0fff); os_std(reg0cur_str, OS$gen_asc_52, DD$aqpcs_reg0cur_1); sprintf(reg1cur_str, "REG 1 CURRENT = %4d AMPS", PF1.reg1cur&0x0fff); os_std(reg1cur_str, OS$gen_asc_52, DD$aqpcs_reg1cur_1); sprintf(reg2cur_str, "REG 2 CURRENT = %4d AMPS", PF1.reg2cur&0x0fff); os_std(reg2cur_str, OS$gen_asc_52, DD$aqpcs_reg2cur_1); sprintf(reg3cur_str, "REG 3 CURRENT = %4d AMPS", PF1.reg3cur&0x0fff); os_std(reg3cur_str, OS$gen_asc_52, DD$aqpcs_reg3cur_1); sprintf(reg4cur_str, "REG 4 CURRENT = %4d AMPS", PF1.reg4cur&0x0fff); os_std(reg4cur_str, OS$gen_asc_52, DD$aqpcs_reg4cur_1); } if(format_type == 2){#define PF2 elrp->el_body.el_aqpcs.ricpem.ric.fmt.fmt2 os_std(&PF2.tempa_1, OS$gen_short, DD$aqpcs_tempa); os_std(&PF2.tempb_1, OS$gen_short, DD$aqpcs_tempb); os_std(&PF2.yellowa_1, OS$gen_short, DD$aqpcs_yellowa); os_std(&PF2.reda_1, OS$gen_short, DD$aqpcs_reda); os_std(&PF2.yellowb_1, OS$gen_short, DD$aqpcs_yellowb); os_std(&PF2.redb_1, OS$gen_short, DD$aqpcs_redb); os_std(&PF2.open_1, OS$gen_short, DD$aqpcs_open); os_std(&PF2.shortsensor_1, OS$gen_short, DD$aqpcs_shortsensor); unpackval_b("TEMPERATURE A = %c%3d.%02d DEG C", PF2.tempa_1|(PF2.tempa_2<<8), tempa_str, DD$aqpcs_tempa_1); unpackval_b("TEMPERATURE B = %c%3d.%02d DEG C", PF2.tempb_1|(PF2.tempb_2<<8), tempb_str, DD$aqpcs_tempb_1); unpackval_b("YELLOW ZONE A = %c%3d.%02d DEG C", PF2.yellowa_1|(PF2.yellowa_2<<8), yellowa_str, DD$aqpcs_yellowa_1); unpackval_b("RED ZONE A = %c%3d.%02d DEG C", PF2.reda_1|(PF2.reda_2<<8), reda_str, DD$aqpcs_reda_1); unpackval_b("YELLOW ZONE B = %c%3d.%02d DEG C", PF2.yellowb_1|(PF2.yellowb_2<<8), yellowb_str, DD$aqpcs_yellowb_1); unpackval_b("RED ZONE B = %c%3d.%02d DEG C", PF2.redb_1|(PF2.redb_2<<8), redb_str, DD$aqpcs_redb_1); unpackval_b("OPEN VALUE = %c%3d.%02d DEG C", PF2.open_1|(PF2.open_2<<8), open_str, DD$aqpcs_open_1); unpackval_b("SHORTED VALUE = %c%3d.%02d DEG C", PF2.shortsensor_1|(PF2.shortsensor_2<<8), shortsensor_str, DD$aqpcs_shortsensor_1); } } else if( format_type >= 4 && format_type <= 7 ) { /* psreg */ os_std(&PCS.ricpem.pem.psreg, OS$gen_short, DD$aqpcs_psreg); clear_conditions(); cnd[1] = PCS.idreg == 0; cnd[2] = PCS.xcpid == 0; cnd[3] = PCS.xcpid == 1; cnd[4] = PCS.xcpid == 2; cnd[5] = PCS.xcpid == 3; cnd[6] = PCS.xcpid == 4; cnd[7] = PCS.xcpid == 5; cnd[8] = PCS.xcpid == 6; cnd[9] = PCS.xcpid == 7; cnd[10] = PCS.xcpid == 8; cnd[11] = PCS.xcpid == 9; cnd[12] = (pem_stcreg>>10&0xf) == 0; cnd[13] = (pem_stcreg>>10&0xf) == 1; clear_sips(); sip[0] = DD$aqpcs_psreg_1; sip[1] = DD$aqpcs_psreg_2; sip[2] = DD$aqpcs_psreg_3; sip[3] = DD$aqpcs_psreg_4; sip[4] = DD$aqpcs_psreg_5; sip[5] = DD$aqpcs_psreg_6; sip[6] = DD$aqpcs_psreg_7; sip[7] = DD$aqpcs_psreg_8; sip[8] = DD$aqpcs_psreg_9; sip[9] = DD$aqpcs_psreg_10; sip[10] = DD$aqpcs_psreg_11; sip[11] = DD$aqpcs_psreg_12; sip[12] = DD$aqpcs_psreg_13; sip[13] = DD$aqpcs_psreg_14; sip[14] = DD$aqpcs_psreg_15; sip[15] = DD$aqpcs_psreg_16; sip[16] = 0; value = elrp->el_body.el_aqpcs.ricpem.pem.psreg; qualified_translate(value, qt_psreg); if((pem_stcreg>>10&0xf) == 0) { os_std(&PCS.ricpem.pem.pwr1reg, OS$gen_tiny, DD$aqpcs_pwr1reg_a); os_std(&PCS.ricpem.pem.pwr2reg, OS$gen_tiny, DD$aqpcs_pwr2reg_a); } else { os_std(&PCS.ricpem.pem.pwr1reg, OS$gen_tiny, DD$aqpcs_pwr1reg_b); os_std(&PCS.ricpem.pem.pwr2reg, OS$gen_tiny, DD$aqpcs_pwr2reg_b); } os_std(&PCS.ricpem.pem.stcreg_1, OS$gen_short, DD$aqpcs_stcreg); os_std(&PCS.ricpem.pem.connreg, OS$gen_tiny, DD$aqpcs_connreg);#define PF4 elrp->el_body.el_aqpcs.ricpem.pem.fmt.fmt4#define PF5 elrp->el_body.el_aqpcs.ricpem.pem.fmt.fmt5#define PF6 elrp->el_body.el_aqpcs.ricpem.pem.fmt.fmt6#define PF7 elrp->el_body.el_aqpcs.ricpem.pem.fmt.fmt7 if( format_type == 4 ) { if((pem_stcreg>>10&0xf) == 0) { os_std(&PF4.keyabreg, OS$gen_tiny, DD$aqpcs_keyabreg_aq); os_std(&PF4.keybcreg, OS$gen_tiny, DD$aqpcs_keybcreg_aq); } if((pem_stcreg>>10&0xf) == 1) { os_std(&PF4.keyabreg, OS$gen_tiny, DD$aqpcs_keyabreg_ar); os_std(&PF4.keybcreg, OS$gen_tiny, DD$aqpcs_keybcreg_ar); } os_std(&PF4.ricavarsb[0], OS$gen_short, DD$aqpcs_ricavarsb_1); os_std(&PF4.ricavarsb[1], OS$gen_short, DD$aqpcs_ricavarsb_2); os_std(&PF4.ricavarsb[2], OS$gen_short, DD$aqpcs_ricavarsb_3); os_std(&PF4.ricavarsb[3], OS$gen_short, DD$aqpcs_ricavarsb_4); os_std(&PF4.ricavarsb[4], OS$gen_short, DD$aqpcs_ricavarsb_5); os_std(&PF4.ricavarsb[5], OS$gen_short, DD$aqpcs_ricavarsb_6); os_std(&PF4.ricavarsb[6], OS$gen_short, DD$aqpcs_ricavarsb_7); os_std(&PF4.ricavarsb[7], OS$gen_short, DD$aqpcs_ricavarsb_8); os_std(&PF4.ricavarsb[8], OS$gen_short, DD$aqpcs_ricavarsb_9); os_std(&PF4.ricavarsb[9], OS$gen_short, DD$aqpcs_ricavarsb_10); os_std(&PF4.ricavarsb[10], OS$gen_short,DD$aqpcs_ricavarsb_11); os_std(&PF4.ricavarsb[11], OS$gen_short,DD$aqpcs_ricavarsb_12); os_std(&PF4.ricavarsb[12], OS$gen_short,DD$aqpcs_ricavarsb_13); os_std(&PF4.ricavarsb[13], OS$gen_short,DD$aqpcs_ricavarsb_14); os_std(&PF4.ricavarsb[14], OS$gen_short,DD$aqpcs_ricavarsb_15); os_std(&PF4.ricavarsb[15], OS$gen_short,DD$aqpcs_ricavarsb_16); os_std(&PF4.ricavarsb[16], OS$gen_short,DD$aqpcs_ricavarsb_17); os_std(&PF4.ricavarsb[17], OS$gen_short,DD$aqpcs_ricavarsb_18); } else if( format_type == 5 ) { os_std(&PF5.bbureg, OS$gen_tiny, DD$aqpcs_bbureg); } else if( format_type == 6 ) { os_std(&PF6.ocpswreg, OS$gen_short, DD$aqpcs_ocpswreg); if(PF6.ocpdisreg[0] || PF6.ocpdisreg[1] || PF6.ocpdisreg[2]) os_std(&PF6.ocpdisreg[0], OS$gen_long, DD$aqpcs_ocpdisreg); } else if( format_type == 7 ) { if((pem_stcreg>>10&0xf) == 0) os_std(&PF7.bscreg, OS$gen_tiny, DD$aqpcs_bscreg_aq); else os_std(&PF7.bscreg, OS$gen_tiny, DD$aqpcs_bscreg_ar); } } } /* */ if( status == EI$FAIL ) return(EI$FAIL); else return(EI$SUCC);}clear_conditions(){ int i; cnd[0] = 1; /* condition 0 is always true */ for(i=1; i<=MAX_CONDS; i++) cnd[i] = 0;}clear_sips(){ int i; for(i=0; i<=MAX_SIPS; i++) sip[i] = 0;}qualified_translate(value, qt_table)unsigned long value;char *qt_table;{ unsigned long v; struct qt_entry *qt; int next_si = 0; /* index into sip of next std item to use */ cnd[0] = 1; /* condition 0 is always true */ for(qt=(struct qt_entry *)qt_table; qt->qcond1 != -1; qt++) { /* check qualifying conditions */ if( !cnd[qt->qcond1] || !cnd[qt->qcond2] || !cnd[qt->qcond3] ) continue; /* get the field */ v = value; /* knock off left bits */#define BITS_IN_LONG 32 v = v << (BITS_IN_LONG-1) - qt->field_leftbit; v = v >> (BITS_IN_LONG-1) - qt->field_leftbit + qt->field_rightbit; /* test field against test value. */ /* -1 for test_value means any non-zero v matches */ /* -2 for test_value means any non-0xf v matches */ if( (v != qt->test_value) && !(qt->test_value == -1 && v ) && !(qt->test_value == -2 && v != 0xf ) ) continue; /* use the string */ if( !sip[next_si] ) /* no standard item pointer? */ break; os_std(qt->translate_string, OS$gen_asc_52, sip[next_si++]); if( next_si == MAX_SIPS ) break; }}/* unpack a special numeric format using given format and given buffer and std_item */unpackval(fmt, val, buf, std_item)char *fmt;unsigned short val;char *buf;int std_item;{ sprintf(buf, fmt, (val&0x8000?'-':'+'), val>>10&0x1f, val&0x3ff); os_std(buf, OS$gen_asc_52, std_item);}/* unpack, but use slightly different pack format than unpackval */unpackval_b(fmt, val, buf, std_item)char *fmt;unsigned short val;char *buf;int std_item;{ sprintf(buf, fmt, (val&0x8000?'-':'+'), val>>8&0x7f, val&0xff); os_std(buf, OS$gen_asc_52, std_item);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -