(curTaskObj: object, objectNameEntries: Map<number, string>)
| 305 | } |
| 306 | |
| 307 | protected async analyzeTaskState(curTaskObj: object, objectNameEntries: Map<number, string>): Promise<TaskState> { |
| 308 | const state = parseInt(curTaskObj['Stat-val']); |
| 309 | |
| 310 | const suspendCount = (state & OS_TASK_STATE_SUSPEND_MASK); |
| 311 | if (suspendCount !== 0) { |
| 312 | return new TaskSuspended(suspendCount); |
| 313 | } |
| 314 | |
| 315 | let pendTimeout = Number.MAX_SAFE_INTEGER; |
| 316 | let TimeoutActive = false; |
| 317 | |
| 318 | if (state & OS_TASK_STATE_TIMEOUT_ACTIVE) { |
| 319 | pendTimeout = parseInt(curTaskObj['Timeout-val']); |
| 320 | TimeoutActive = true; |
| 321 | } |
| 322 | |
| 323 | const maskedState = (state & OS_TASK_STATE_MASK); |
| 324 | |
| 325 | switch (maskedState) { |
| 326 | case OsTaskPendingState.READY: |
| 327 | if (pendTimeout) { |
| 328 | return new TaskDelayed(pendTimeout); |
| 329 | } |
| 330 | else { |
| 331 | return new TaskReady(); |
| 332 | } |
| 333 | |
| 334 | case OsTaskPendingState.TASK_EVENT: |
| 335 | const resultState = new TaskPending(); |
| 336 | resultState.addEventType(maskedState); |
| 337 | |
| 338 | if (curTaskObj['EventMask-val']) { |
| 339 | const eventMask = parseInt(curTaskObj['EventMask-val']); // Waiting bits |
| 340 | const event = parseInt(curTaskObj['Events-val']); // Set bits |
| 341 | const eventInfo: EventInfo = { address: eventMask, eventType: state, name: `mask ${eventMask} - set ${event}` }; |
| 342 | |
| 343 | if (TimeoutActive) { |
| 344 | eventInfo.timeOut = pendTimeout; |
| 345 | } |
| 346 | |
| 347 | resultState.addEvent(eventInfo); |
| 348 | } |
| 349 | |
| 350 | return resultState; |
| 351 | |
| 352 | default: { |
| 353 | const resultState = new TaskPending(); |
| 354 | resultState.addEventType(maskedState); |
| 355 | |
| 356 | if (curTaskObj['pWaitList-val']) { |
| 357 | const waitListEntryAddress = parseInt(curTaskObj['pWaitList-val']); |
| 358 | |
| 359 | if (waitListEntryAddress !== 0) { |
| 360 | const waitListEntry = await this.getVarChildrenObj(curTaskObj['pWaitList-ref'], 'pWaitList'); |
| 361 | const waitObject = parseInt(waitListEntry['pWaitObj-val']); |
| 362 | const eventInfo: EventInfo = { address: waitObject, eventType: state }; |
| 363 | |
| 364 | if (objectNameEntries.has(waitObject)) { |
no test coverage detected