static pwr_tStatus restart ( ini_sContext *cp ) { pwr_tStatus sts; char time[24]; lst_sEntry *pl; ini_sProc *pp; ini_CheckContext(&sts, cp); ini_ReadBootFile(&sts, cp); ini_CheckNode(&sts, cp); checkErrors(cp); if (cp->flags.b.verbose) logCardinality(cp); qcom_SignalAnd(&sts, &qcom_cQini, 0); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_swapInit); ini_ReloadNode(&sts, cp); if (cp->flags.b.verbose) logChanges(cp); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_rebuildInit); ini_RebuildNode(&sts, cp); ini_DecodeBodies(&sts, cp, 0); ini_DecodeBodies(&sts, cp, 1); if (cp->flags.b.verbose) errh_LogInfo(&cp->log, "Update bodies of io objects"); ini_UpdateBodies(&sts, cp, 1); io_init_signals(); ini_ProcTable(&sts, cp); // ini_ProcLoad(&sts, cp, cp->plc); // ini_ProcStart(&sts, cp, cp->plc); ini_ProcIter(&sts, cp, proc_mProcess_user, ini_mProc_plc, ini_ProcLoad); ini_ProcIter(&sts, cp, proc_mProcess_user, ini_mProc_plc, ini_ProcStart); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_newPlcInit); qcom_WaitAnd(&sts, &cp->eventQ, &qcom_cQini, ini_mEvent_newPlcInitDone | cp->plc_sigmask, qcom_cTmoEternal); errh_LogInfo(&cp->log, "Entering time critical period, stopping old PLC"); qcom_SignalAnd(&sts, &qcom_cQini, ~cp->plc_sigmask); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_oldPlcStop); qcom_WaitAnd(&sts, &cp->eventQ, &qcom_cQini, ini_mEvent_oldPlcStopDone | cp->plc_sigmask, qcom_cTmoEternal); qcom_SignalAnd(&sts, &qcom_cQini, ~ini_mEvent_oldPlcStop); ini_UpdateBodies(&sts, cp, 0); qcom_SignalAnd(&sts, &qcom_cQini, ~cp->plc_sigmask); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_newPlcStart); qcom_WaitAnd(&sts, &cp->eventQ, &qcom_cQini, ini_mEvent_newPlcStartDone | cp->plc_sigmask, qcom_cTmoEternal); errh_LogInfo(&cp->log, "Time critical period over, new PLC is running"); qcom_SignalOr(&sts, &qcom_cQini, ini_mEvent_swapDone); for (pp = lst_Succ(NULL, &cp->proc_lh, &pl); pp != NULL; pp = lst_Succ(NULL, pl, &pl)) { if ( pp->flags.m & ini_mProc_plc && pp->objectp) { pwr_sClass_PlcProcess *plc = pp->objectp; time_GetTime(&plc->LastChgTime); if ( time_Dcomp(&plc->StartTime, &plc->StopTime) == 1) time_Dsub(&plc->StallTime, &plc->StartTime, &plc->StopTime); else plc->StallTime = pwr_cNDeltaTime; time_DtoAscii(&plc->StallTime, 1, time, sizeof(time)); cp->np->RestartStallTime = plc->StallTime; } } cp->log.put.type.s = 2; errh_LogInfo(&cp->log, "IO stall time: %s", time); ini_FreeBodies(&sts, cp, 0); ini_FreeBodies(&sts, cp, 1); return sts; }
int ItemLocal::open_attributes( TblNav *tblnav, double x, double y) { double node_x, node_y; brow_GetNodePosition( node, &node_x, &node_y); if ( brow_IsOpen( node)) { // Close brow_SetNodraw( tblnav->brow->ctx); brow_CloseNode( tblnav->brow->ctx, node); brow_SetAnnotPixmap( node, 0, tblnav->brow->pixmap_leaf); brow_ResetOpen( node, tblnav_mOpen_All); brow_ResetNodraw( tblnav->brow->ctx); brow_Redraw( tblnav->brow->ctx, node_y); } else { char value[256]; char txt[80]; brow_SetNodraw( tblnav->brow->ctx); new ItemLocalAttr( tblnav, "Description", item.description, node, flow_eDest_IntoLast); strcpy( value, ""); cdh_ObjidToString( value, item.oid, 1); new ItemLocalAttr( tblnav, "Oid", value, node, flow_eDest_IntoLast); new ItemLocalAttr( tblnav, "Object", item.oname, node, flow_eDest_IntoLast); time_DtoAscii( &item.storagetime, 0, value, sizeof(value)); new ItemLocalAttr( tblnav, "StorageTime", value, node, flow_eDest_IntoLast); time_AtoAscii( &item.creatime, time_eFormat_DateAndTime, value, sizeof(value)); new ItemLocalAttr( tblnav, "CreationTime", value, node, flow_eDest_IntoLast); time_AtoAscii( &item.modtime, time_eFormat_DateAndTime, value, sizeof(value)); new ItemLocalAttr( tblnav, "ModificationTime", value, node, flow_eDest_IntoLast); sprintf( value, "%f", item.scantime); new ItemLocalAttr( tblnav, "ScanTime", value, node, flow_eDest_IntoLast); strcpy( value, ""); if ( item.options & pwr_mSevOptionsMask_PosixTime) strcat( value, " PosixTime"); if ( item.options & pwr_mSevOptionsMask_HighTimeResolution) strcat( value, " HighTimeResolution"); if ( item.options & pwr_mSevOptionsMask_ReadOptimized) strcat( value, " ReadOptimized"); if ( item.options & pwr_mSevOptionsMask_UseDeadBand) strcat( value, " UseDeadBand"); new ItemLocalAttr( tblnav, "Options", value, node, flow_eDest_IntoLast); sprintf( value, "%f", item.deadband); new ItemLocalAttr( tblnav, "Deadband", value, node, flow_eDest_IntoLast); for ( int i = 0; i < (int)item.objectattrlist.size(); i++) { sprintf( txt, "Attr[%d].Name", i); new ItemLocalAttr( tblnav, txt, item.objectattrlist[i].aname, node, flow_eDest_IntoLast); switch ( item.objectattrlist[i].type) { case pwr_eType_Int64: strcpy( value, "Int64"); break; case pwr_eType_Int32: strcpy( value, "Int32"); break; case pwr_eType_Int16: strcpy( value, "Int16"); break; case pwr_eType_Int8: strcpy( value, "Int8"); break; case pwr_eType_UInt64: strcpy( value, "UInt64"); break; case pwr_eType_UInt32: strcpy( value, "UInt32"); break; case pwr_eType_UInt16: strcpy( value, "UInt16"); break; case pwr_eType_UInt8: strcpy( value, "UInt8"); break; case pwr_eType_Boolean: strcpy( value, "Boolean"); break; case pwr_eType_Char: strcpy( value, "Char"); break; case pwr_eType_Float32: strcpy( value, "Float32"); break; case pwr_eType_Float64: strcpy( value, "Float64"); break; case pwr_eType_String: strcpy( value, "String"); break; case pwr_eType_Time: strcpy( value, "Time"); break; case pwr_eType_DeltaTime: strcpy( value, "DeltaTime"); break; default: strcpy( value, "Unknown"); } sprintf( txt, "Attr[%d].DataType", i); new ItemLocalAttr( tblnav, txt, value, node, flow_eDest_IntoLast); sprintf( txt, "Attr[%d].DataSize", i); sprintf( value, "%d", item.objectattrlist[i].size); new ItemLocalAttr( tblnav, txt, value, node, flow_eDest_IntoLast); sprintf( txt, "Attr[%d].Unit", i); new ItemLocalAttr( tblnav, txt, item.objectattrlist[i].unit, node, flow_eDest_IntoLast); } brow_SetOpen( node, tblnav_mOpen_Attributes); brow_ResetNodraw( tblnav->brow->ctx); brow_Redraw( tblnav->brow->ctx, node_y); } return 1; }
static void attrvalue_to_string( int type_id, void *value_ptr, char *str, int size, int *len, char *format) { pwr_tObjid objid; pwr_sAttrRef *attrref; int sts; char timstr[64]; if ( value_ptr == 0) { strcpy( str, "UNDEFINED"); return; } switch ( type_id ) { case pwr_eType_Boolean: { if ( !format) *len = sprintf( str, "%d", *(pwr_tBoolean *)value_ptr); else *len = sprintf( str, format, *(pwr_tBoolean *)value_ptr); break; } case pwr_eType_Float32: { if ( !format) *len = sprintf( str, "%f", *(float *)value_ptr); else *len = sprintf( str, format, *(float *)value_ptr); break; } case pwr_eType_Float64: { if ( !format) *len = sprintf( str, "%f", *(double *)value_ptr); else *len = sprintf( str, format, *(double *)value_ptr); break; } case pwr_eType_Char: { if ( !format) *len = sprintf( str, "%c", *(char *)value_ptr); else *len = sprintf( str, format, *(char *)value_ptr); break; } case pwr_eType_Int8: { if ( !format) *len = sprintf( str, "%d", *(char *)value_ptr); else *len = sprintf( str, format, *(char *)value_ptr); break; } case pwr_eType_Int16: { if ( !format) *len = sprintf( str, "%hd", *(short *)value_ptr); else *len = sprintf( str, format, *(short *)value_ptr); break; } case pwr_eType_Int32: { if ( !format) *len = sprintf( str, "%d", *(int *)value_ptr); else *len = sprintf( str, format, *(int *)value_ptr); break; } case pwr_eType_Int64: { if ( !format) *len = sprintf( str, pwr_dFormatInt64, *(pwr_tInt64 *)value_ptr); else *len = sprintf( str, format, *(pwr_tInt64 *)value_ptr); break; } case pwr_eType_UInt8: { if ( !format) *len = sprintf( str, "%d", *(unsigned char *)value_ptr); else *len = sprintf( str, format, *(unsigned char *)value_ptr); break; } case pwr_eType_UInt16: { if ( !format) *len = sprintf( str, "%hd", *(unsigned short *)value_ptr); else *len = sprintf( str, format, *(unsigned short *)value_ptr); break; } case pwr_eType_UInt32: case pwr_eType_Mask: case pwr_eType_Enum: { if ( !format) *len = sprintf( str, "%d", *(unsigned int *)value_ptr); else *len = sprintf( str, format, *(unsigned int *)value_ptr); break; } case pwr_eType_UInt64: { if ( !format) *len = sprintf( str, pwr_dFormatUInt64, *(pwr_tUInt64 *)value_ptr); else *len = sprintf( str, format, *(pwr_tUInt64 *)value_ptr); break; } case pwr_eType_String: { strncpy( str, (char *)value_ptr, size); str[size-1] = 0; *len = strlen(str); break; } case pwr_eType_Objid: { pwr_tOName hiername; objid = *(pwr_tObjid *)value_ptr; if ( !objid.oix) sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mName_volumeStrict); else sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_AttrRef: { pwr_tAName hiername; attrref = (pwr_sAttrRef *) value_ptr; sts = gdh_AttrrefToName ( attrref, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_Time: { sts = time_AtoAscii( (pwr_tTime *) value_ptr, time_eFormat_DateAndTime, timstr, sizeof(timstr)); if ( EVEN(sts)) strcpy( timstr, "-"); *len = sprintf( str, "%s", timstr); break; } case pwr_eType_DeltaTime: { sts = time_DtoAscii( (pwr_tDeltaTime *) value_ptr, 1, timstr, sizeof(timstr)); if ( EVEN(sts)) strcpy( timstr, "Undefined time"); *len = sprintf( str, "%s", timstr); break; } case pwr_eType_ObjectIx: { *len = sprintf( str, "%s", cdh_ObjectIxToString( NULL, *(pwr_tObjectIx *) value_ptr, 1)); break; } case pwr_eType_ClassId: { pwr_tOName hiername; objid = cdh_ClassIdToObjid( *(pwr_tClassId *) value_ptr); sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_TypeId: { pwr_tOName hiername; objid = cdh_TypeIdToObjid( *(pwr_tTypeId *) value_ptr); sts = gdh_ObjidToName ( objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { strcpy( str, ""); *len = 0; break; } *len = sprintf( str, "%s", hiername); break; } case pwr_eType_VolumeId: { *len = sprintf( str, "%s", cdh_VolumeIdToString( NULL, *(pwr_tVolumeId *) value_ptr, 1, 0)); break; } case pwr_eType_RefId: { *len = sprintf( str, "%s", cdh_SubidToString( NULL, *(pwr_tSubid *) value_ptr, 1)); break; } } }
int sev_repair::list( char *table) { int found = 0; char timstr[40]; for ( unsigned int i = 0; i < m_db->m_items.size(); i++) { if ( cdh_NoCaseStrcmp( table, m_db->m_items[i].tablename) == 0) { printf( "-- %s\n", m_db->m_items[i].tablename); printf( " Object: %s\n", m_db->m_items[i].oname); for ( int j = 0; j < (int)m_db->m_items[i].attr.size(); j++) { printf( " Attribute: %s ", m_db->m_items[i].attr[j].aname); for ( int k = 0; k < 19 - (int)strlen( m_db->m_items[i].attr[j].aname); k++) printf( " "); switch ( m_db->m_items[i].attr[j].type) { case pwr_eType_Boolean: printf( "Boolean\n"); break; case pwr_eType_Float32: printf( "Float32\n"); break; case pwr_eType_Float64: printf( "Float64\n"); break; case pwr_eType_Int64: printf( "Int64\n"); break; case pwr_eType_Int32: printf( "Int32\n"); break; case pwr_eType_Int16: printf( "Int16\n"); break; case pwr_eType_Int8: printf( "Int8\n"); break; case pwr_eType_UInt64: printf( "UInt64\n"); break; case pwr_eType_UInt32: printf( "UInt32\n"); break; case pwr_eType_UInt16: printf( "UInt16\n"); break; case pwr_eType_UInt8: printf( "UInt8\n"); break; case pwr_eType_String: printf( "String\n"); break; default: printf( "Unknown\n"); } } time_AtoAscii( &m_db->m_items[i].creatime, time_eFormat_DateAndTime, timstr, sizeof(timstr)); printf( " Creation time: %s\n", timstr); time_AtoAscii( &m_db->m_items[i].modtime, time_eFormat_DateAndTime, timstr, sizeof(timstr)); printf( " Modification time: %s\n", timstr); time_DtoAscii( &m_db->m_items[i].storagetime, time_eFormat_DateAndTime, timstr, sizeof(timstr)); printf( " Storage time: %s\n", timstr); printf( " Scantime: %f\n", m_db->m_items[i].scantime); printf( " Deadband: %f\n", m_db->m_items[i].deadband); printf( " Options: "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_PosixTime) printf( "PosixTime "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_HighTimeResolution) printf( "HighTimeResoltion "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_ReadOptimized) printf( "ReadOptimized "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_UseDeadBand) printf( "UseDeadBand "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_Parameter) printf( "Parameter "); if ( m_db->m_items[i].options & pwr_mSevOptionsMask_Event) printf( "Event "); printf( "\n"); found = 1; break; } } if ( !found) printf( "** No such table\n"); return 1; }