diff --git a/openspec/changes/marker-discovery/.openspec.yaml b/openspec/changes/marker-discovery/.openspec.yaml new file mode 100755 index 00000000..a3b2b029 --- /dev/null +++ b/openspec/changes/marker-discovery/.openspec.yaml @@ -0,0 +1,4 @@ +schema: spec-driven +name: marker-discovery +status: proposing +created: 2026-03-13 diff --git a/openspec/changes/marker-discovery/design.md b/openspec/changes/marker-discovery/design.md new file mode 100755 index 00000000..738e2886 --- /dev/null +++ b/openspec/changes/marker-discovery/design.md @@ -0,0 +1,260 @@ +# Design: Marker Discovery Tool + +## Architecture overview + +``` +┌──────────────────────────────────────────────────────────────────┐ +│ marker_scanner.py (CLI) │ +│ --org | --repo org/repo | --input-file [--branch] [--output] │ +└──────────────────────────┬───────────────────────────────────────┘ + │ + ┌────────────────┼────────────────┐ + ▼ ▼ ▼ +┌──────────────────┐ ┌──────────────┐ ┌──────────────────────────┐ +│ Default mode │ │ Repo mode │ │ Input-file mode │ +│ (--org) │ │ (--repo) │ │ (--input-file) │ +│ │ │ │ │ │ +│ 1. List repos │ │ Parse │ │ component_file_parser.py │ +│ in org (API) │ │ org/repo │ │ parse versions.txt │ +│ 2. Shallow clone│ │ pairs │ │ all GitHub orgs included │ +│ on --branch │ │ Clone each │ │ │ +│ (single try, │ │ on --branch │ │ github_client.py │ +│ 5min timeout│ │ (single try) │ │ clone at exact commit │ +│ no retry) │ │ │ │ (single try, no fallback)│ +└────────┬─────────┘ └──────┬───────┘ └────────────┬─────────────┘ + │ │ │ + └──────────────────┼──────────────────────┘ + │ list of cloned repo paths + ▼ + ┌─────────────┼────────────┐ + ▼ ▼ ▼ +┌──────────────────┐ ┌──────────────┐ ┌──────────────────┐ +│ code_parser.py │ │script_parser │ │ patch_parser.py │ +│ │ │ .py │ │ │ +│ .c / .cpp / .h │ │ All scripts │ │ .patch files │ +│ │ │ │ │ │ +│ t2_event_s/d/f │ │ t2ValNotify │ │ All APIs (source │ +│ + wrapper resolve│ │ t2CountNotify│ │ + script) │ +│ │ │ │ │ added lines only │ +│ NOT t2ValNotify/ │ │ NOT t2_event │ │ │ +│ t2CountNotify │ │ │ │ │ +└────────┬─────────┘ └──────┬───────┘ └────────┬─────────┘ + │ │ │ + └──────────────────┼──────────────────┘ + │ list of MarkerRecord + ▼ +┌──────────────────────────────────────────────────────────────────┐ +│ report_generator.py │ +│ │ +│ 1. Sort all markers by name │ +│ 2. Detect duplicates (same marker name, different component) │ +│ 3. Generate markdown: │ +│ - Summary stats │ +│ - Unique marker inventory (marker + components list) │ +│ - Detailed marker inventory table (with ⚠️ on duplicates) │ +│ - Duplicate markers section │ +│ 4. Write to output file │ +└──────────────────────────────────────────────────────────────────┘ +``` + +## Data model + +All scanners produce the same record type: + +```python +@dataclass +class MarkerRecord: + marker_name: str # "BOOT_TIME" + component: str # "dcm-agent" (repo name) + file_path: str # "src/dcm.c" (relative to repo root) + line: int # 234 + api: str # "t2_event_d" or "t2CountNotify→t2_event_d" or "t2ValNotify" + source_type: str # "source" | "script" | "script_dynamic" | "patch" +``` + +## Module details + +### marker_scanner.py — CLI + orchestration + +**Arguments:** +| Arg | Required | Default | Description | +|-----|----------|---------|-------------| +| `--branch` | No | `main` | Branch/tag to scan (ignored with `--input-file`) | +| `--org` | No | All 4 RDK orgs | GitHub org(s) to scan. Example: `--org rdkcentral rdk-e` | +| `--repo` | No | None | One or more `org/repo` pairs. Example: `--repo rdkcentral/telemetry rdk-e/rdkservices-cpc` | +| `--input-file` | No | None | Version manifest file (versions.txt format) | +| `--output` | No | `stdout` | Output file path for markdown report | +| `--verbose` / `-v` | No | off | Enable debug logging | + +**Flow (default mode — no input file):** +1. Parse arguments +2. For each org, call `github_client.list_org_repos()` and clone all on target branch (single attempt, 5-minute timeout) +3. For each cloned repo, run all three scanners +4. Pass results + empty unresolved list to `report_generator` + +**Flow (repo mode — `--repo org/repo`):** +1. Parse `org/repo` pairs from arguments +2. Clone each repo on the target branch (single attempt) +3. For each cloned repo, run all three scanners +4. Pass results to `report_generator` + +**Flow (input-file mode):** +1. Parse version manifest via `component_file_parser.parse_component_file()` — extracts org, repo, commit SHA, branch from each line. All GitHub repos included regardless of org. +2. For each component, clone at exact commit SHA via `github_client.clone_components_from_file()` (single attempt, no fallback) +3. Track unresolved components (clone failures) +4. Pass results + unresolved list to `report_generator` + +### github_client.py — GitHub API + cloning + +**Authentication:** +- API calls: Read credentials from `~/.netrc` for `api.github.com` per-request via `_NetrcAuth` class (never stored in memory) +- Git clones: Use `~/.gitconfig` per-org credential helpers for HTTPS clones (supports multiple GitHub accounts) + +**Default organizations:** `rdkcentral`, `rdk-e`, `rdk-common`, `rdk-gdcs` + +**Repo enumeration:** +- `GET /orgs/{org}/repos` — paginated (100 per page) +- Collect all repo names and clone URLs + +**Search API (fast path):** +- `GET /search/code?q=t2_event+org:{org}` — search for C/C++ API calls +- `GET /search/code?q=t2ValNotify+org:{org}` — search for script API calls +- `GET /search/code?q=t2CountNotify+org:{org}` — search for script API calls +- Merge unique repo names from all search results +- Rate limit: 10 req/min for code search — implement delay/retry + +**Branch fallback (default mode):** +- `clone_repo(org, repo, branch, target_dir)`: single attempt on specified branch, 5-minute timeout, no fallback retries + +**Commit-SHA cloning (input-file mode):** +- `clone_components_from_file(components, temp_dir)`: for each component from the parser: + 1. `_clone_at_commit(url, path, sha)`: `git init` → `git fetch --depth 1 origin ` → `git checkout FETCH_HEAD` + 2. No fallback — if commit clone fails, component is marked unresolved + +**Robust cleanup:** +- `_force_rmtree()`: handles stubborn git-lfs directories via `onerror` handler with `chmod` +- All clones into a temp directory, cleaned up on exit + +### component_file_parser.py — Version manifest parsing + +Parses `versions.txt` files listing GitHub repos with branches and commit SHAs. + +**Supported URL formats:** +``` +https://github.com/rdkcentral/telemetry@develop : a1b2c3d4... +https://github.com/rdkcentral/rbus.git@develop : e5f6a7b8... +b'https://github.com/rdkcentral/meta-rdk-iot'@sha : sha +ssh://github.com/rdk-e/rdkservices-cpc@ : 1dff01bd... +ssh://github.com/rdk-e/airplay-application-cpc@ : 43c9d71147... +b'ssh://git@github.com/rdk-e/meta-rdk-tools'@sha : sha +``` + +**Filtering:** +- Only GitHub URLs (both HTTPS and SSH) are matched +- All GitHub repos are included regardless of org +- Non-GitHub URLs (gerrit, kernel.org, tarballs) are skipped +- Lines with `md5sum` checksums are skipped + +**SSH → HTTPS conversion:** All SSH URLs are converted to `https://github.com/{org}/{repo}.git` for clone compatibility with `.gitconfig` credential helpers. + +**Output:** List of `{name, org, commit, branch, url}` + +### code_parser.py — tree-sitter AST scanning + +**Dependencies:** `tree-sitter`, `tree-sitter-c` (C grammar covers most `.cpp` in RDK repos; add `tree-sitter-cpp` if needed) + +**Pass 1 — Direct calls:** +- Walk AST for `call_expression` nodes where function name is `t2_event_s`, `t2_event_d`, or `t2_event_f` +- First argument is a `string_literal` → extract marker name +- Record: marker name, file, line, API variant + +**Pass 2 — Wrapper detection:** +- Walk AST for `function_definition` nodes whose body contains a `call_expression` to `t2_event_*` +- If the first argument to `t2_event_*` is an `identifier` (not a string literal) → this function is a wrapper +- Record: wrapper function name, which parameter position carries the marker, which `t2_event_*` variant + +**Pass 3 — Wrapper call site resolution:** +- For each detected wrapper, walk AST again to find all `call_expression` nodes calling that wrapper +- Extract the string literal at the marker argument position +- Record as: marker name, file, line, API = `wrapperName→t2_event_*` + +**Limitation:** Only one level of wrapping. If a wrapper calls another wrapper, the inner wrapper is not resolved. + +### script_parser.py — Script file scanning + +Scans all non-C/C++ files for `t2ValNotify` and `t2CountNotify` calls. + +**File selection:** +- Include any file that is NOT `.c`, `.cpp`, `.h`, or `.patch` +- This covers `.sh`, `.py`, `.lua`, `.pl`, `.rb`, and any other script type + +**Pattern matching (regex):** +``` +t2ValNotify\s+"([^"]+)" +t2CountNotify\s+"([^"]+)" +``` + +**Call format:** +```bash +t2ValNotify "MARKER_NAME" "value" +t2CountNotify "MARKER_NAME" 1 +``` + +- First argument (quoted string) is the marker name +- API column reports `t2ValNotify` or `t2CountNotify` directly (not mapped to underlying `t2_event_*`) +- `source_type` = `"script"` + +**Important:** `t2ValNotify` and `t2CountNotify` are NOT searched in `.c/.cpp/.h` files. In C/C++ these functions are wrapper definitions — the wrapper resolver in `code_parser.py` handles those naturally by tracing their call sites. + +### patch_parser.py — .patch file scanning + +- Recursively find all `.patch` files in each cloned repo +- For each `.patch` file: + - Read line by line + - Include only lines starting with `+` (exclude `+++` header lines) + - Apply regex patterns to match: + - C/C++ APIs: `t2_event_s(`, `t2_event_d(`, `t2_event_f(` + - Script APIs: `t2ValNotify "`, `t2CountNotify "` + - Extract marker name from first argument (string literal only) + - Line number = line number within the `.patch` file +- Component name = repo name + `(patch)` + +**Note:** Wrapper resolution within patches is limited — patches lack full function context. Direct calls only for v1. + +### report_generator.py — Markdown output + +**Input:** List of `MarkerRecord`, metadata (branch, org, timestamp) + +**Processing:** +1. Sort records alphabetically by `marker_name`, then by `component` +2. Group by `marker_name` to detect duplicates (same name, different component) +3. Flag duplicate markers with ⚠️ + +**Output sections:** +1. Header with branch, org, generation timestamp +2. Summary: total markers (static/dynamic split), components scanned, unresolved count, duplicate count +3. Marker inventory table (static markers, sorted, duplicates flagged) +4. Dynamic markers table (markers with shell variables) +5. Duplicate markers section (if any) +6. Unresolved components table (if input-file mode, components not found) + +## Error handling + +| Scenario | Behavior | +|----------|----------| +| Repo clone fails | Log warning, skip repo, continue | +| Commit SHA not fetchable | Fall back to branch, then default branch | +| Component clone fails entirely | Add to unresolved list, continue | +| File parse error (tree-sitter) | Log warning, skip file, continue | +| GitHub API rate limit | Wait and retry with backoff | +| No markers found in any repo | Generate report with zero counts | +| Network failure mid-run | Fail with non-zero exit, clean up temp dirs | +| Git LFS / stubborn directories | `_force_rmtree` with `chmod` + retry | + +## Performance considerations + +- Shallow clones (`--depth 1`) minimize data transfer +- Fast path (search API) avoids cloning repos without markers +- Repos can be cloned concurrently (thread pool, ~5 parallel clones) +- tree-sitter parsing is fast (native C library) +- Temp directory cleanup in `finally` block to avoid disk leak diff --git a/openspec/changes/marker-discovery/proposal.md b/openspec/changes/marker-discovery/proposal.md new file mode 100755 index 00000000..fc5549db --- /dev/null +++ b/openspec/changes/marker-discovery/proposal.md @@ -0,0 +1,121 @@ +# Proposal: Marker Discovery Tool + +## What + +A Python CLI tool that scans repositories in the `rdkcentral`, `rdk-e`, `rdk-common`, and `rdk-gdcs` GitHub organizations to discover T2 telemetry marker instrumentation calls (`t2_event_s`, `t2_event_d`, `t2_event_f`, `t2ValNotify`, `t2CountNotify`), and generates a comprehensive markdown report of all markers found. + +Supports three modes: +1. **Default mode**: Scan the `main` branch of all repos in all 4 organizations +2. **Repo mode**: Scan specific repos by `org/repo` pairs on a given branch +3. **Input-file mode**: Accept a `versions.txt` manifest file listing GitHub repos with exact commit SHAs, clone at those commits, and scan + +## Why + +- Developers and system administrators have no centralized way to know which T2 telemetry markers are instrumented across the RDK ecosystem +- Manual searching across dozens of repositories is error-prone and time-consuming +- Marker naming conflicts across components go undetected +- Support engineers analyzing telemetry data lack documentation of what markers exist and where they originate + +## Scope + +### In scope (v1) + +- **Repo enumeration**: Dynamically list all repositories in 4 GitHub organizations (`rdkcentral`, `rdk-e`, `rdk-common`, `rdk-gdcs`) via the GitHub API +- **Version manifest input**: Accept a `versions.txt` file (`--input-file`) listing GitHub repos with branches and commit SHAs in the format `URL@ref : commit_sha`. Supports HTTPS and SSH URLs. SSH URLs are converted to HTTPS for cloning. +- **Branch strategy**: + - Default and repo modes: scan target branch (default `main`), single clone attempt with 5-minute timeout, no fallback retries + - With input file: clone at exact commit SHA, single attempt, no fallback +- **All GitHub orgs in input file**: All GitHub repos listed in the version manifest are included regardless of org. Non-GitHub URLs (gerrit, kernel.org, tarballs) and md5sum entries are skipped. +- **Unresolved component tracking**: Components that fail to clone are listed in a dedicated report section +- **Source file scanning**: Parse `.c`, `.cpp`, `.h` files using tree-sitter C/C++ AST to extract `t2_event_s`, `t2_event_d`, `t2_event_f` calls +- **Wrapper resolution (level 1)**: Detect functions that wrap `t2_event_*` calls with a variable argument, then resolve call sites to extract the actual marker name string literals +- **Script file scanning**: Scan all script files (any type) for `t2ValNotify` and `t2CountNotify` calls. These APIs are NOT searched in C/C++ files (they appear there as wrapper definitions, handled by wrapper resolution). Report API as `t2ValNotify` or `t2CountNotify` directly. +- **Dynamic marker classification**: Markers containing shell variables (`$var`, `${var}`) are classified as "script_dynamic" and reported in a separate section. Pure positional args (`$1`) are resolved when possible by tracing shell function call sites. +- **Patch file scanning**: Scan `.patch` files for added lines (`+` prefix) containing `t2_event_*`, `t2ValNotify`, and `t2CountNotify` calls +- **Duplicate detection**: Identify markers with the same name appearing in different components +- **Markdown report**: Generate a structured report with summary stats, unique marker inventory, detailed marker inventory table, dynamic markers section, duplicate marker section, and unresolved components section +- **Authentication**: Use `~/.netrc` credentials for GitHub API calls. Use `~/.gitconfig` per-org credential helpers for git clone operations (supports multiple GitHub accounts). + +### Out of scope (v1) + +- Macro-wrapped marker calls (e.g., `#define REPORT(m,v) t2_event_d(m,v)`) +- Wrappers of wrappers (more than one level of indirection) +- JSON/CSV/HTML output formats +- Cross-referencing against telemetry profile configurations +- Log file scanning +- CI/CD integration + +### Non-goals + +- This tool does not modify any source code +- This tool does not validate marker values or telemetry payloads +- This tool does not replace runtime telemetry monitoring + +## Output format + +```markdown +# Telemetry Marker Inventory +**Branch**: main +**Organizations**: rdkcentral, rdk-e, rdk-common, rdk-gdcs +**Generated**: 2026-03-13 10:30:00 UTC + +## Summary +- **Total Markers**: 1,234 +- **Static Markers**: 1,200 +- **Dynamic Markers**: 34 (contain shell variables) +- **Components Scanned**: 258 +- **Unresolved Components**: 5 ⚠️ +- **Duplicate Markers**: 12 ⚠️ + +## Unique Marker Inventory +| Marker Name | Components | +|-------------|------------| +| BOOT_TIME | dcm-agent | +| CPU_USAGE ⚠️ | telemetry, common_utilities | + +## Detailed Marker Inventory +| Marker Name | Component | File Path | Line | API | +|-------------|-----------|-----------|------|-----| +| BOOT_TIME | dcm-agent | src/dcm.c | 234 | t2_event_d | +| CPU_USAGE ⚠️ | telemetry | src/metrics.c | 89 | t2_event_f | + +## Dynamic Markers +Markers containing shell variables (`$var`, `${var}`) that resolve at runtime. + +| Marker Pattern | Component | File Path | Line | API | +|----------------|-----------|-----------|------|-----| +| SYST_ERR_$source_reboot | sysint | scripts/reboot.sh | 45 | t2ValNotify | + +## Duplicate Markers +⚠️ **CPU_USAGE** - Found in 2 components: +- telemetry: src/metrics.c:89 (`t2_event_f`) +- common_utilities: utils/system.c:156 (`t2_event_d`) + +## Unresolved Components +Components from the input file that could not be scanned. + +| Component | Version | Reason | +|-----------|---------|--------| +| sky-jspp | 1.0.0-r4 | Not found in any organization | +``` + +## Key decisions + +1. **tree-sitter over regex** for source parsing — enables reliable multi-line call extraction and natural wrapper function traversal via AST walking +2. **Dual scanning strategy** based on branch — search API for default branch (fast), full clone for release branches (complete) +3. **Shallow clones** (`--depth 1`) to minimize network and disk usage +4. **Patch files scanned in all cloned repos** — not limited to meta-* repos + +## Location + +``` +tools/marker_discovery/ +├── marker_scanner.py — CLI entry point + orchestration +├── github_client.py — GitHub API: org enumeration, org discovery, branch check, clone +├── component_file_parser.py — Parse component version input files +├── code_parser.py — tree-sitter AST parsing for .c/.cpp/.h files +├── script_parser.py — Script file scanning for t2ValNotify/t2CountNotify +├── patch_parser.py — .patch file scanning (added lines only) +├── report_generator.py — Markdown report generation +└── requirements.txt — Python dependencies +``` diff --git a/openspec/changes/marker-discovery/tasks.md b/openspec/changes/marker-discovery/tasks.md new file mode 100755 index 00000000..06669d50 --- /dev/null +++ b/openspec/changes/marker-discovery/tasks.md @@ -0,0 +1,98 @@ +# Tasks: Marker Discovery Tool + +## Setup + +- [x] **Task 1: Project scaffolding** + Create `tools/marker_discovery/` directory structure with empty module files (`__init__.py`, `marker_scanner.py`, `github_client.py`, `code_parser.py`, `script_parser.py`, `patch_parser.py`, `report_generator.py`) and `requirements.txt` with dependencies: `tree-sitter`, `tree-sitter-c`, `requests`. + +## Core modules + +- [x] **Task 2: GitHub client — repo enumeration** + Implement `github_client.py` with: + - `_NetrcAuth` class that reads `~/.netrc` per-request without storing credentials + - `list_org_repos(org)`: paginated `GET /orgs/{org}/repos`, return list of repo names + clone URLs + - `search_code_in_org(org, query)`: paginated code search API, return set of repo names with matches + - `find_repo_org(name, orgs)`: discover which org a repo belongs to by checking all orgs + - `DEFAULT_ORGS`: `["rdkcentral", "rdk-e", "rdk-common", "rdk-gdcs"]` + - Rate limit handling with backoff for search API (10 req/min) + +- [x] **Task 3: GitHub client — branch check and cloning** + Add to `github_client.py`: + - `clone_repo(org, repo, branch, target_dir)`: shallow clone on specified branch, single attempt, 5-minute timeout, no fallback retries + - `clone_matching_repos(org, repos, branch, temp_dir)`: orchestrate cloning for a list of repos + - `clone_components_from_file(components, temp_dir)`: clone from parsed version manifest at exact commit SHAs. Single attempt via `_clone_at_commit` (git init + fetch --depth 1 + checkout FETCH_HEAD). No fallback to branch. Returns (cloned, unresolved). + - `_clone_at_commit(url, path, sha)`: shallow clone at exact commit SHA, 5-minute timeout + - `_force_rmtree(path)`: robust directory cleanup handling git-lfs stubborn files + - Temp directory management (create on start, cleanup on exit) + +- [x] **Task 4: Code parser — direct call extraction** + Implement `code_parser.py`: + - `scan_repo(repo_path, repo_name)`: find all `.c`, `.cpp`, `.h` files recursively + - Use tree-sitter with C grammar to parse each file + - Walk AST for `call_expression` nodes matching `t2_event_s`, `t2_event_d`, `t2_event_f` + - Extract marker name from first argument (must be `string_literal`) + - Return list of `MarkerRecord` + +- [x] **Task 5: Code parser — wrapper detection and resolution** + Add to `code_parser.py`: + - Pass 2: walk AST for `function_definition` nodes containing `t2_event_*` calls where first arg is an `identifier` (not literal). Record wrapper name, parameter index, API variant. + - Pass 3: for each detected wrapper, find all `call_expression` nodes calling that wrapper. Extract string literal at marker argument position. + - Return additional `MarkerRecord` entries with API as `wrapperName→t2_event_*` + +- [x] **Task 6: Script parser** + Implement `script_parser.py`: + - `scan_repo_scripts(repo_path, repo_name)`: find all files that are NOT `.c`, `.cpp`, `.h`, or `.patch` + - Regex match for `t2ValNotify "MARKER"` and `t2CountNotify "MARKER"` patterns + - Extract marker name from first quoted argument + - API column = `t2ValNotify` or `t2CountNotify` (not mapped to underlying t2_event_*) + - Return list of `MarkerRecord` with `source_type="script"` + - Do NOT search for `t2ValNotify`/`t2CountNotify` in C/C++ files (wrapper resolver handles those) + +- [x] **Task 7: Patch parser** + Implement `patch_parser.py`: + - `scan_repo_patches(repo_path, repo_name)`: find all `.patch` files recursively + - Read each `.patch` file line by line + - Filter to `+` lines only (exclude `+++` headers) + - Regex match for `t2_event_s(`, `t2_event_d(`, `t2_event_f(` AND `t2ValNotify "`, `t2CountNotify "` patterns + - Extract marker name from first argument (string literal) + - Return list of `MarkerRecord` with `source_type="patch"` and component as `repo_name (patch)` + +- [x] **Task 8: Report generator** + Implement `report_generator.py`: + - `generate_report(markers, branch, orgs, components_scanned)`: produce markdown string + - Sort markers alphabetically by name, then component + - Detect duplicates (same marker name in different components) + - Format: header with metadata → summary stats → unique marker inventory (marker + components list) → detailed marker inventory table (⚠️ on duplicates) → dynamic markers section (if any) → duplicate markers section (if any) + - Write to file or stdout + +## CLI + integration + +- [x] **Task 9: CLI entry point and orchestration** + Implement `marker_scanner.py`: + - Argument parsing: `--branch` (default: `main`), `--org` (default: all 4 RDK orgs, accepts multiple values), `--repo` (one or more `org/repo` pairs), `--input-file` (versions.txt), `--output` (default: stdout), `--verbose`/`-v` + - Three modes: + - Default mode (no input file, no repo): list all repos in all orgs, clone on target branch, scan + - Repo mode (`--repo`): clone specific `org/repo` pairs on target branch + - Input-file mode: parse version manifest via `component_file_parser`, clone at exact commits via `clone_components_from_file`, track unresolved + - For each cloned repo: run `code_parser.scan_repo()`, `script_parser.scan_repo_scripts()`, and `patch_parser.scan_repo_patches()` + - Pass all results + unresolved list to `report_generator` + - Cleanup temp directory + - Exit 0 on success, non-zero on error + +## Testing + +- [x] **Task 10: Unit tests** + Create `tools/marker_discovery/tests/`: + - `test_code_parser.py`: test direct call extraction and wrapper resolution against sample C files + - `test_script_parser.py`: test `t2ValNotify`/`t2CountNotify` extraction, dynamic marker detection, positional arg resolution + - `test_patch_parser.py`: test patch line filtering and marker extraction against sample .patch content + - `test_report_generator.py`: test markdown output format, duplicate detection, sorting, dynamic markers section, unresolved components section + - `test_component_file_parser.py`: test versions.txt parsing — HTTPS URLs, SSH URLs (with and without `git@`), byte-string prefix (`b'...'`), commit/branch extraction, SSH-to-HTTPS URL conversion, gerrit/tarball skipping, empty file + - Sample fixtures: small `.c` files, scripts with known markers, `.patch` files with added lines + +- [x] **Task 11: Integration test with real repo** + Test end-to-end against a single known `rdkcentral` repo (e.g., one with known markers) to validate: + - Clone works with `.netrc` auth + - Branch fallback works + - Markers are discovered correctly + - Report output matches expected format diff --git a/openspec/config.yaml b/openspec/config.yaml new file mode 100644 index 00000000..392946c6 --- /dev/null +++ b/openspec/config.yaml @@ -0,0 +1,20 @@ +schema: spec-driven + +# Project context (optional) +# This is shown to AI when creating artifacts. +# Add your tech stack, conventions, style guides, domain knowledge, etc. +# Example: +# context: | +# Tech stack: TypeScript, React, Node.js +# We use conventional commits +# Domain: e-commerce platform + +# Per-artifact rules (optional) +# Add custom rules for specific artifacts. +# Example: +# rules: +# proposal: +# - Keep proposals under 500 words +# - Always include a "Non-goals" section +# tasks: +# - Break tasks into chunks of max 2 hours diff --git a/report.md b/report.md new file mode 100644 index 00000000..1bbcf6b3 --- /dev/null +++ b/report.md @@ -0,0 +1,1233 @@ +# Telemetry Marker Inventory +**Branch**: develop +**Organizations**: rdkcentral +**Generated**: 2026-03-16 06:31:31 UTC + +## Summary +- **Total Markers**: 913 +- **Static Markers**: 909 +- **Dynamic Markers**: 4 (contain shell variables) +- **Components Scanned**: 594 +- **Duplicate Markers**: 56 ⚠️ + +## Marker Inventory +| Marker Name | Component | File Path | Line | API | +|-------------|-----------|-----------|------|-----| +| 2GRxPackets_split | OneWifi | scripts/process_monitor_atom.sh | 592 | t2ValNotify | +| 2GTxPackets_split | OneWifi | scripts/process_monitor_atom.sh | 587 | t2ValNotify | +| 5GclientMac_split | telemetry | source/testApp/testCommonLibApi.c | 73 | t2_event_s | +| acs_split | tr069-protocol-agent | source-embedded/DslhManagementServer/ccsp_management_server_pa_api.c | 767 | t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 617 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | runDumpUpload.sh | 826 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | c_sourcecode/src/scanner/scanner.c | 616 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_split | crashupload | runDumpUpload.sh | 825 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | uploadDumps_TestCases.md | 1618 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | c_sourcecode/src/scanner/scanner.c | 620 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo | crashupload | runDumpUpload.sh | 828 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | uploadDumps_TestCases.md | 1619 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | c_sourcecode/src/scanner/scanner.c | 622 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo_status | crashupload | runDumpUpload.sh | 830 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | uploadDumps_TestCases.md | 1620 | t2ValNotify | +| APPARMOR_C_split: | rdk-apparmor-profiles | apparmor_parse.sh | 119 | t2ValNotify | +| APPARMOR_E_split: | rdk-apparmor-profiles | apparmor_parse.sh | 126 | t2ValNotify | +| BasicBridgeMode_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_x_cisco_com_devicecontrol_dml.c | 2187 | t2_event_d | +| Board_temperature_split | sysint | lib/rdk/temperature-telemetry.sh | 27 | t2ValNotify | +| bootuptime_dnsIpChanged_split | utopia | source/service_udhcpc/service_udhcpc.c | 561 | t2_event_s | +| bootuptime_SNMPV2Ready_split | utopia | source/util/print_uptime/print_uptime.c | 139 | t2_event_d | +| bootuptime_wifi_split | utopia | source/util/print_uptime/print_uptime.c | 151 | t2_event_d | +| BT_ERR_BatteryThreadFail | bluetooth | src/btrCore.c | 5280 | telemetry_event_d→t2_event_d | +| BT_ERR_DiscStartFail | bluetooth | src/bt-ifce/btrCore_gdbus_bluez5.c | 5351 | telemetry_event_d→t2_event_d | +| BT_ERR_DiscStopFail | bluetooth | src/bt-ifce/btrCore_gdbus_bluez5.c | 5374 | telemetry_event_d→t2_event_d | +| BT_ERR_FailToPair | bluetooth | src/btrCore.c | 4479 | telemetry_event_d→t2_event_d | +| BT_ERR_GetBTAdapterFail | bluetooth | src/btrCore.c | 3768 | telemetry_event_d→t2_event_d | +| BT_INFO_NotSupp_split | bluetooth | src/btrCore.c | 3155 | telemetry_event_s→t2_event_s | +| BTconn_split | bluetooth | src/bt-ifce/btrCore_gdbus_bluez5.c | 906 | telemetry_event_s→t2_event_s | +| btime_clientconn_split | lan-manager-lite | source/lm/lm_main.c | 824 | t2_event_d | +| btime_cpenter_split | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/network_response.sh | 557 | t2ValNotify | +| btime_cpexit_split | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/network_response.sh | 508 | t2ValNotify | +| btime_eth_split | utopia | source/util/print_uptime/print_uptime.c | 127 | t2_event_d | +| btime_ipacqEth_split | sysint | lib/rdk/ipv6addressChange.sh | 62 | t2ValNotify | +| btime_ipacqWifi_split | sysint | lib/rdk/ipv6addressChange.sh | 65 | t2ValNotify | +| btime_laninit_split | utopia | source/service_dhcp/lan_handler.c | 795 | t2_event_d | +| btime_laninit_split | utopia | source/scripts/init/service.d/lan_handler.sh | 323 | t2ValNotify | +| btime_mesh_split | utopia | source/util/print_uptime/print_uptime.c | 131 | t2_event_d | +| btime_moca_split | utopia | source/util/print_uptime/print_uptime.c | 135 | t2_event_d | +| btime_waninit_split | utopia | source/service_wan/service_wan.c | 1155 | t2_event_d | +| btime_wanup_spit | utopia | source/util/print_uptime/print_uptime.c | 143 | t2_event_d | +| btime_wcpenter_split ⚠️ | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/network_response.sh | 680 | t2ValNotify | +| btime_wcpenter_split ⚠️ | sysint-broadband | webgui_arm.sh | 325 | t2ValNotify | +| btime_wcpenter_split ⚠️ | webui | source/Styles/xb3/config/webgui.sh | 313 | t2ValNotify | +| btime_wcpexit_split | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/revert_redirect.sh | 66 | t2ValNotify | +| btime_webpa_split | utopia | source/util/print_uptime/print_uptime.c | 147 | t2_event_d | +| btime_xhome_split | utopia | source/util/print_uptime/print_uptime.c | 155 | t2_event_d | +| BTpair_split | bluetooth | src/bt-ifce/btrCore_gdbus_bluez5.c | 904 | telemetry_event_s→t2_event_s | +| BTPairFail_split | bluetooth | src/btrCore.c | 3122 | telemetry_event_s→t2_event_s | +| BUFFER_MEMORY_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 292 | t2ValNotify | +| CACHE_MEMORY_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 291 | t2ValNotify | +| cachedMem_split | test-and-diagnostic | scripts/resource_monitor.sh | 464 | t2ValNotify | +| CDL_INFO_inprogressExit | sysint | lib/rdk/userInitiatedFWDnld.sh | 755 | t2CountNotify | +| CDLrdkportal_split ⚠️ | rdkfwupdater | src/device_status_helper.c | 377 | t2CountNotify→t2_event_d | +| CDLrdkportal_split ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 178 | t2ValNotify | +| CDLsuspended_split | rdkfwupdater | src/rdkv_upgrade.c | 146 | Upgradet2CountNotify→t2_event_d | +| certerr_split ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 267 | t2ValNotify→t2_event_s | +| certerr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 458 | t2_val_notify→t2_event_s | +| certerr_split ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 284 | Upgradet2ValNotify→t2_event_s | +| certerr_split ⚠️ | rdm-agent | scripts/downloadUtils.sh | 417 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 307 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 408 | t2ValNotify | +| certerr_split ⚠️ | sysint-broadband | stateRedRecoveryUtils.sh | 78 | t2ValNotify | +| certerr_split ⚠️ | sysint-broadband | stateRedRecoveryUtils.sh | 107 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/cbr_firmwareDwnld.sh | 764 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/cbr_firmwareDwnld.sh | 805 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/cbr_firmwareDwnld.sh | 1472 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/cbr_firmwareDwnld.sh | 1488 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/xb6_firmwareDwnld.sh | 865 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/xb6_firmwareDwnld.sh | 908 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/xb6_firmwareDwnld.sh | 1628 | t2ValNotify | +| certerr_split ⚠️ | xconf-client | scripts/xb6_firmwareDwnld.sh | 1642 | t2ValNotify | +| cloudFWFile_split | rdkfwupdater | src/device_status_helper.c | 878 | t2ValNotify→t2_event_s | +| core_split | sysint | lib/rdk/core_shell.sh | 165 | t2ValNotify | +| CoredumpFail_split | crashupload | c_sourcecode/src/upload/upload.c | 286 | t2ValNotify→t2_event_s | +| coreUpld_split | crashupload | c_sourcecode/src/upload/upload.c | 228 | t2ValNotify→t2_event_s | +| cpuinfo_split | sysint | lib/rdk/system_info_collector.sh | 56 | t2ValNotify | +| cpuinfo_split | sysint | lib/rdk/cpu-statistics.sh | 30 | t2ValNotify | +| crashedContainerAppname_split | crashupload | c_sourcecode/src/scanner/scanner.c | 603 | t2ValNotify→t2_event_s | +| crashedContainerAppname_split | crashupload | runDumpUpload.sh | 817 | t2ValNotify | +| crashedContainerAppname_split | crashupload | uploadDumps_TestCases.md | 1615 | t2ValNotify | +| crashedContainerName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 601 | t2ValNotify→t2_event_s | +| crashedContainerName_split | crashupload | runDumpUpload.sh | 815 | t2ValNotify | +| crashedContainerName_split | crashupload | uploadDumps_TestCases.md | 1613 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 604 | t2ValNotify→t2_event_s | +| crashedContainerProcessName_split | crashupload | runDumpUpload.sh | 818 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | uploadDumps_TestCases.md | 1616 | t2ValNotify | +| crashedContainerStatus_split | crashupload | c_sourcecode/src/scanner/scanner.c | 602 | t2ValNotify→t2_event_s | +| crashedContainerStatus_split | crashupload | runDumpUpload.sh | 816 | t2ValNotify | +| crashedContainerStatus_split | crashupload | uploadDumps_TestCases.md | 1614 | t2ValNotify | +| CrashedProc_split | sysint | lib/rdk/core_shell.sh | 149 | t2ValNotify | +| CurlRet_split ⚠️ | rdkfwupdater | src/rdkv_main.c | 1166 | t2CountNotify→t2_event_d | +| CurlRet_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 418 | t2ValNotify | +| dadrecoverypartner_split | test-and-diagnostic | scripts/task_health_monitor.sh | 3886 | t2ValNotify | +| DCACBCurlFail_split | sysint-broadband | dcaSplunkUpload.sh | 324 | t2ValNotify | +| DCACurlFail_split | sysint-broadband | dcaSplunkUpload.sh | 258 | t2ValNotify | +| DCMCBCurlFail_split | sysint-broadband | DCMscript.sh | 382 | t2ValNotify | +| DCMXCONFCurlFail_split | sysint-broadband | DCMscript.sh | 318 | t2ValNotify | +| Discovered_MngdDev_split | secure-upnp | src/xdiscovery.c | 3517 | t2_event_s | +| emmcNoFile_split | sysint | lib/rdk/eMMC_Upgrade.sh | 131 | t2ValNotify | +| emmcVer_split | sysint | lib/rdk/eMMC_Upgrade.sh | 66 | t2ValNotify | +| factoryPartnerid_split | sysint-broadband | log_factoryPartnerId.sh | 38 | t2ValNotify | +| FileNr_split | test-and-diagnostic | scripts/FileHandle_Monitor.sh | 34 | t2ValNotify | +| Filesize_split | rdkfwupdater | src/rdkv_upgrade.c | 623 | Upgradet2CountNotify→t2_event_d | +| FREE_MEM_split | sysint | lib/rdk/system_info_collector.sh | 59 | t2ValNotify | +| FREE_MEM_split | sysint | lib/rdk/cpu-statistics.sh | 33 | t2ValNotify | +| FreeCPU_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 243 | t2ValNotify | +| FW_ACTIVEBANK_split | miscellaneous-broadband | source/FwBankInfo/FwBank_Info.c | 69 | t2_event_s | +| FW_INACTIVEBANK_split | miscellaneous-broadband | source/FwBankInfo/FwBank_Info.c | 97 | t2_event_s | +| getcurrentpartner_split | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 887 | t2_event_s | +| getcurrentpartner_split | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 994 | t2_event_s | +| getfactorypartner_split | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 879 | t2_event_s | +| getfactorypartner_split | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 884 | t2_event_s | +| getfactorypartner_split | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 985 | t2_event_s | +| getfactorypartner_split | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 990 | t2_event_s | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 295 | t2_event_s | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsource | plugin/HdmiCecSourceImplementation.cpp | 215 | t2_event_s | +| HDMI_INFO_PORT1connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1965 | t2_event_d | +| HDMI_INFO_PORT2connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1968 | t2_event_d | +| HDMI_INFO_PORT3connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1971 | t2_event_d | +| HDMI_WARN_CEC_InvalidParamExcptn | hdmicec | ccec/src/Bus.cpp | 346 | t2_event_s | +| HighDnldBytes_split | test-and-diagnostic | scripts/rxtx_cur.sh | 78 | t2ValNotify | +| HighDnldBytes_split | test-and-diagnostic | scripts/rxtx_cur.sh | 83 | t2ValNotify | +| HighDnldMAC_split | test-and-diagnostic | scripts/rxtx_cur.sh | 79 | t2ValNotify | +| HighDnldMAC_split | test-and-diagnostic | scripts/rxtx_cur.sh | 84 | t2ValNotify | +| HighUpldBytes_split | test-and-diagnostic | scripts/rxtx_cur.sh | 65 | t2ValNotify | +| HighUpldBytes_split | test-and-diagnostic | scripts/rxtx_cur.sh | 70 | t2ValNotify | +| HighUpldMAC_split | test-and-diagnostic | scripts/rxtx_cur.sh | 66 | t2ValNotify | +| HighUpldMAC_split | test-and-diagnostic | scripts/rxtx_cur.sh | 71 | t2ValNotify | +| IHC:AuthenticationConfigChanged_WAPInstance2.4G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 952 | report_t2→t2_event_d | +| IHC:AuthenticationConfigChanged_WAPInstance5G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 973 | report_t2→t2_event_d | +| IHC:AuthenticationConfigChanged_WAPInstance6G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 995 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsBelow60P_Radio2.4G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 810 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsBelow60P_Radio5G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 824 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsBelow60P_Radio6G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 839 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsBelow60P_RadioETH | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 854 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsZero_Radio2.4G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 804 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsZero_Radio5G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 818 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsZero_Radio6G | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 833 | report_t2→t2_event_d | +| IHC:ConnectedPrivateClientsZero_RadioETH | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 848 | report_t2→t2_event_d | +| IHC:EthernetPOD_Radio | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1768 | report_t2→t2_event_d | +| IHC:EthernetPOD_Radio | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1787 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance2.4G_PRIV | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1206 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance2.4G_PUBLIC | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1289 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance2.4G_SPUBLIC | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1373 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance5G_PRIV | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1227 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance5G_PUBLIC | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1310 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance5G_SPUBLIC | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1394 | report_t2→t2_event_d | +| IHC:SSIDChanged_WAPInstance6G_PRIV | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1249 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio2.4G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1654 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio2.4G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1683 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio2.4G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1719 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio5G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1664 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio5G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1709 | report_t2→t2_event_d | +| IHC:WirelessPOD_Radio5G_POD | test-and-diagnostic | source/ImageHealthChecker/ImagehealthChecker.c | 1738 | report_t2→t2_event_d | +| LinkQualityNonServiceable_Lan2WanBlocked | provisioning-and-management | source/TR-181/middle_layer_src/subscribeForRbusEvents.c | 85 | t2_event_d | +| LinkQualityServiceable_Lan2WanAllowed | provisioning-and-management | source/TR-181/middle_layer_src/subscribeForRbusEvents.c | 72 | t2_event_d | +| LOAD_AVG_ATOM_split ⚠️ | sysint-broadband | log_mem_cpu_info_atom.sh | 104 | t2ValNotify | +| LOAD_AVG_ATOM_split ⚠️ | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 163 | t2ValNotify | +| LoadAvg_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 161 | t2ValNotify | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 214 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 342 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 431 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 518 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 338 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 614 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 645 | t2ValNotify | +| lxybundleversion_split | rdkfwupdater | src/json_process.c | 284 | t2ValNotify→t2_event_s | +| MAP-T_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c | 22570 | t2_event_d | +| MAP-T_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c | 22576 | t2_event_d | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 246 | t2_event_s | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 247 | t2ValNotify→t2_event_s | +| MFR_ERR_MFRSV_coredetected | sysint | lib/rdk/core_shell.sh | 85 | t2CountNotify | +| MPSTAT_SOFT_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 241 | t2ValNotify | +| MTA_DHCP_ENABLE_FAIL_AfterRetries | media-terminal-adapter-agent | source/TR-181/middle_layer_src/cosa_rbus_apis.c | 305 | t2_event_d | +| MTA_WAN_GET_FAIL_AfterRetries | media-terminal-adapter-agent | source/TR-181/middle_layer_src/cosa_rbus_apis.c | 264 | t2_event_d | +| NF_ERR_rdm_filenotfound_extraction | rdm-agent | scripts/downloadUtils.sh | 622 | t2CountNotify | +| NF_INFO_codedumped | sysint | lib/rdk/core_shell.sh | 121 | t2CountNotify | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_downloadmgr.c | 287 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_packagemgr.c | 193 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_success | rdm-agent | src/rdm_downloadmgr.c | 327 | t2ValNotify→t2_event_s | +| NF_INFO_rdm_success | rdm-agent | src/rdm_downloadmgr.c | 343 | t2ValNotify→t2_event_s | +| NVRAM_USE_PERCENTAGE_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 284 | t2ValNotify | +| OneToOneNAT_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_deviceinfo_dml.c | 11652 | t2_event_d | +| PciEnumeration_split | test-and-diagnostic | scripts/selfheal_bootup.sh | 989 | t2ValNotify | +| PciEnumeration_split | test-and-diagnostic | scripts/log_twice_day.sh | 37 | t2ValNotify | +| PDRI_Version_split ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 163 | t2ValNotify→t2_event_s | +| PDRI_Version_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 458 | t2ValNotify | +| PortMappingEnable_split | test-and-diagnostic | scripts/log_twice_day.sh | 31 | t2ValNotify | +| processCrash_split | crashupload | c_sourcecode/src/scanner/scanner.c | 367 | t2ValNotify→t2_event_s | +| processCrash_split | crashupload | runDumpUpload.sh | 759 | t2ValNotify | +| processCrash_split | crashupload | uploadDumps_TestCases.md | 1588 | t2ValNotify | +| RCU_FWver_split | sysint | lib/rdk/xconfImageCheck.sh | 395 | t2ValNotify | +| RCU_FWver_split | sysint | lib/rdk/xconfImageCheck.sh | 541 | t2ValNotify | +| rdkb_rebootreason_split | provisioning-and-management | source/TR-181/middle_layer_src/plugin_main_apis.c | 826 | t2_event_s | +| RDKB_SELFHEAL:WAN_Link_Heal | test-and-diagnostic | scripts/check_gw_health.sh | 469 | t2ValNotify | +| RDKLOGS_USE_PERCENTAGE_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 281 | t2ValNotify | +| RDM_ERR_package_failed | rdm-agent | src/rdm_downloadutils.c | 296 | t2CountNotify→t2_event_d | +| RDM_ERR_package_notfound | rdm-agent | src/rdm_downloadmgr.c | 167 | t2CountNotify→t2_event_d | +| RDM_ERR_rdm_retry_fail | rdm-agent | scripts/downloadUtils.sh | 378 | t2CountNotify | +| RDM_ERR_rsa_signature_failed | rdm-agent | src/rdm_downloadmgr.c | 316 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed | rdm-agent | src/rdm_downloadmgr.c | 332 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed | rdm-agent | src/rdm_packagemgr.c | 232 | t2CountNotify→t2_event_d | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 426 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 522 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadSuccess | rdm-agent | rdm_main.c | 534 | t2CountNotify→t2_event_d | +| RDM_INFO_DefaultURL | rdm-agent | src/rdm_downloadutils.c | 102 | t2ValNotify→t2_event_s | +| RDM_INFO_DirectBlocked | rdm-agent | src/rdm_downloadutils.c | 339 | t2CountNotify→t2_event_d | +| RDM_INFO_DownloadSSRURL | rdm-agent | src/rdm_downloadutils.c | 95 | t2ValNotify→t2_event_s | +| RDM_INFO_extraction_complete | rdm-agent | src/rdm_downloadmgr.c | 307 | t2CountNotify→t2_event_d | +| RDM_INFO_package_download | rdm-agent | src/rdm_downloadutils.c | 288 | t2ValNotify→t2_event_s | +| RDM_INFO_rsa_valid_signature | rdm-agent | src/rdm_openssl.c | 981 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature | rdm-agent | src/rdm_downloadutils.c | 634 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature | rdm-agent | src/rdm_packagemgr.c | 63 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_openssl.c | 985 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_downloadutils.c | 637 | t2CountNotify→t2_event_d | +| RemotePortUsage_split | test-and-diagnostic | scripts/remote_port_usage.sh | 86 | t2ValNotify | +| REVSSH_CMINTERFACE_FAILURE | sysint-broadband | startTunnel.sh | 139 | t2CountNotify | +| REVSSH_FAILURE | sysint-broadband | startTunnel.sh | 169 | t2CountNotify | +| REVSSH_GETCONFIGFILE_FAILURE | sysint-broadband | startTunnel.sh | 156 | t2CountNotify | +| REVSSH_SUCCESS | sysint-broadband | startTunnel.sh | 172 | t2CountNotify | +| RF_ERROR_DHCP_Rebinding | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 394 | t2CountNotify | +| RF_ERROR_DHCP_Rebinding | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 274 | t2CountNotify | +| RF_ERROR_IPV4IPV6PingFailed | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 540 | t2CountNotify | +| RF_ERROR_IPV4IPV6PingFailed | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 247 | t2CountNotify | +| RF_ERROR_IPV4IPV6PingFailed | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 416 | t2CountNotify | +| RF_ERROR_IPV4PingFailed | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 343 | t2CountNotify | +| RF_ERROR_IPV4PingFailed | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 381 | t2CountNotify | +| RF_ERROR_IPV4PingFailed | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 260 | t2CountNotify | +| RF_ERROR_IPV6PingFailed | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 362 | t2CountNotify | +| RF_ERROR_IPV6PingFailed | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 409 | t2CountNotify | +| RF_ERROR_IPV6PingFailed | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 288 | t2CountNotify | +| RF_ERROR_LAN_stop | utopia | source/scripts/init/service.d/lan_handler.sh | 129 | t2CountNotify | +| RF_ERROR_Wan_down | utopia | source/service_wan/service_wan.c | 1360 | t2_event_d | +| RF_ERROR_wan_restart | utopia | source/service_wan/service_wan.c | 1147 | t2_event_d | +| RF_ERROR_WAN_stop | gw-provisioning-application | source/gw_prov_sm.c | 2381 | t2_event_d | +| RF_ERROR_WAN_stopped | test-and-diagnostic | scripts/selfheal_aggressive.sh | 913 | t2CountNotify | +| RF_ERROR_WAN_stopped | test-and-diagnostic | scripts/task_health_monitor.sh | 4180 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_ipv4.sh | 114 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/lan_handler.sh | 268 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/lan_handler.sh | 313 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_ntpclient.sh | 189 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_multinet.sh | 155 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_ciscoconnect.sh | 67 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1114 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1124 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1138 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1148 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1171 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1369 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1379 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1392 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1405 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 1433 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_forwarding.sh | 174 | t2CountNotify | +| RF_INFO_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_forwarding.sh | 195 | t2CountNotify | +| Router_Discovered | networkmanager | tools/upnp/UpnpDiscoveryManager.cpp | 97 | t2_event_s | +| SCARD_INFO_emmc_noUpgd | sysint | lib/rdk/eMMC_Upgrade.sh | 135 | t2CountNotify | +| SHORTS_CONN_SUCCESS | sysint | lib/rdk/startStunnel.sh | 181 | t2CountNotify | +| SHORTS_DEVICE_TYPE_PROD | sysint | lib/rdk/startStunnel.sh | 120 | t2CountNotify | +| SHORTS_DEVICE_TYPE_TEST | sysint | lib/rdk/startStunnel.sh | 115 | t2CountNotify | +| SHORTS_DEVICE_TYPE_UNKNOWN | sysint | lib/rdk/startStunnel.sh | 126 | t2CountNotify | +| SHORTS_SSH_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 176 | t2CountNotify | +| SHORTS_STUNNEL_CERT_FAILURE | sysint | lib/rdk/startStunnel.sh | 101 | t2CountNotify | +| SHORTS_STUNNEL_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 162 | t2CountNotify | +| Slab_split | test-and-diagnostic | scripts/resource_monitor.sh | 474 | t2ValNotify | +| SlabUsage_split | test-and-diagnostic | scripts/resource_monitor.sh | 484 | t2ValNotify | +| SPEEDTEST_IPERF_INFO_split | rdk-speedtest-cli | source/rdk-speedtest-cli.c | 565 | t2_event_s | +| SWAP_MEMORY_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 290 | t2ValNotify | +| swdlCBCurlFail_split | xconf-client | scripts/cbr_firmwareDwnld.sh | 434 | t2ValNotify | +| swdlCBCurlFail_split | xconf-client | scripts/xb6_firmwareDwnld.sh | 450 | t2ValNotify | +| swdlCurlFail_split | xconf-client | scripts/cbr_firmwareDwnld.sh | 393 | t2ValNotify | +| swdlCurlFail_split | xconf-client | scripts/xb6_firmwareDwnld.sh | 409 | t2ValNotify | +| SYS_ERROR_5min_avg_cpu_100 | test-and-diagnostic | scripts/resource_monitor.sh | 297 | t2CountNotify | +| SYS_ERROR_ApplyDefaut_MeshStatus | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 5212 | t2_event_d | +| SYS_ERROR_brlan0_not_created | test-and-diagnostic | scripts/selfheal_aggressive.sh | 463 | t2CountNotify | +| SYS_ERROR_brlan0_not_created | test-and-diagnostic | scripts/selfheal_aggressive.sh | 528 | t2CountNotify | +| SYS_ERROR_brlan0_not_created | test-and-diagnostic | scripts/task_health_monitor.sh | 2743 | t2CountNotify | +| SYS_ERROR_brlan0_not_created | test-and-diagnostic | scripts/task_health_monitor.sh | 2808 | t2CountNotify | +| SYS_ERROR_brlan0_not_created | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 447 | t2CountNotify | +| SYS_ERROR_CCSPBus_error190 | data-model-cli | source/ccsp_message_bus_client_tool.c | 901 | t2_event_d | +| SYS_ERROR_CCSPBus_error191 | data-model-cli | source/ccsp_message_bus_client_tool.c | 905 | t2_event_d | +| SYS_ERROR_CcspTandDSspHung_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 5162 | t2CountNotify | +| SYS_ERROR_CM_Not_Registered | component-registry | source/CrSsp/ssp_dbus.c | 501 | t2_event_d | +| SYS_ERROR_CPU100 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 218 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1118 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1125 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1139 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1145 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 4375 | t2CountNotify | +| SYS_ERROR_DHCPV4Client_notrunning ⚠️ | wan-manager | source/WanManager/wanmgr_interface_sm.c | 514 | t2_event_d | +| SYS_ERROR_DHCPV6Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1158 | t2CountNotify | +| SYS_ERROR_DHCPV6Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1167 | t2CountNotify | +| SYS_ERROR_DHCPV6Client_notrunning ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1173 | t2CountNotify | +| SYS_ERROR_DHCPV6Client_notrunning ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 4384 | t2CountNotify | +| SYS_ERROR_DHCPV6Client_notrunning ⚠️ | wan-manager | source/WanManager/wanmgr_interface_sm.c | 536 | t2_event_d | +| SYS_ERROR_Dibbler_DAD_failed | test-and-diagnostic | scripts/selfheal_aggressive.sh | 735 | t2CountNotify | +| SYS_ERROR_Dibbler_DAD_failed | test-and-diagnostic | scripts/selfheal_aggressive.sh | 807 | t2CountNotify | +| SYS_ERROR_Dibbler_DAD_failed | test-and-diagnostic | scripts/task_health_monitor.sh | 3962 | t2CountNotify | +| SYS_ERROR_Dibbler_DAD_failed | test-and-diagnostic | scripts/task_health_monitor.sh | 4027 | t2CountNotify | +| SYS_ERROR_DibblerServer_emptyconf | test-and-diagnostic | scripts/selfheal_aggressive.sh | 751 | t2CountNotify | +| SYS_ERROR_DibblerServer_emptyconf | test-and-diagnostic | scripts/selfheal_aggressive.sh | 757 | t2CountNotify | +| SYS_ERROR_DibblerServer_emptyconf | test-and-diagnostic | scripts/selfheal_aggressive.sh | 852 | t2CountNotify | +| SYS_ERROR_DibblerServer_emptyconf | test-and-diagnostic | scripts/task_health_monitor.sh | 3978 | t2CountNotify | +| SYS_ERROR_DibblerServer_emptyconf | test-and-diagnostic | scripts/task_health_monitor.sh | 4078 | t2CountNotify | +| SYS_ERROR_DmCli_Bridge_mode_error | test-and-diagnostic | scripts/task_health_monitor.sh | 1049 | t2CountNotify | +| SYS_ERROR_DNSFAIL | wan-manager | source/TR-181/middle_layer_src/wanmgr_rdkbus_apis.c | 1922 | t2_event_d | +| SYS_ERROR_Drop_cache | test-and-diagnostic | scripts/check_memory_health.sh | 43 | t2CountNotify | +| SYS_ERROR_Duplicate_crontab | test-and-diagnostic | scripts/task_health_monitor.sh | 468 | t2CountNotify | +| SYS_ERROR_ErouterDown_reboot | test-and-diagnostic | scripts/selfheal_aggressive.sh | 634 | t2CountNotify | +| SYS_ERROR_ErouterDown_reboot | test-and-diagnostic | scripts/task_health_monitor.sh | 983 | t2CountNotify | +| SYS_ERROR_Error_fetching_devicemode | test-and-diagnostic | scripts/selfheal_aggressive.sh | 394 | t2CountNotify | +| SYS_ERROR_Error_fetching_devicemode | test-and-diagnostic | scripts/selfheal_aggressive.sh | 501 | t2CountNotify | +| SYS_ERROR_Error_fetching_devicemode | test-and-diagnostic | scripts/task_health_monitor.sh | 2672 | t2CountNotify | +| SYS_ERROR_Error_fetching_devicemode | test-and-diagnostic | scripts/task_health_monitor.sh | 2781 | t2CountNotify | +| SYS_ERROR_Factory_partner_set_comcast | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 843 | t2_event_d | +| SYS_ERROR_Factory_partner_set_comcast | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 944 | t2_event_d | +| SYS_ERROR_Factorypartner_fetch_failed | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 760 | t2_event_d | +| SYS_ERROR_Factorypartner_fetch_failed | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 841 | t2_event_d | +| SYS_ERROR_Factorypartner_fetch_failed | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 743 | t2_event_d | +| SYS_ERROR_Factorypartner_fetch_failed | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 941 | t2_event_d | +| SYS_ERROR_FW_ACTIVEBANK_FETCHFAILED | miscellaneous-broadband | source/FwBankInfo/FwBank_Info.c | 56 | t2_event_d | +| SYS_ERROR_FW_INACTIVEBANK_FETCHFAILED | miscellaneous-broadband | source/FwBankInfo/FwBank_Info.c | 84 | t2_event_d | +| SYS_ERROR_GRETunnel_restored | test-and-diagnostic | scripts/task_health_monitor.sh | 1866 | t2CountNotify | +| SYS_ERROR_GRETunnel_restored | test-and-diagnostic | scripts/task_health_monitor.sh | 1911 | t2CountNotify | +| SYS_ERROR_GRETunnel_restored | test-and-diagnostic | scripts/task_health_monitor.sh | 1979 | t2CountNotify | +| SYS_ERROR_GRETunnel_restored | test-and-diagnostic | scripts/task_health_monitor.sh | 2017 | t2CountNotify | +| SYS_ERROR_GRETunnel_restored | test-and-diagnostic | scripts/task_health_monitor.sh | 2063 | t2CountNotify | +| SYS_ERROR_ICC_ABOVE_THRESHOLD | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 142 | t2CountNotify | +| SYS_ERROR_ICC_BELOW_THRESHOLD | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 145 | t2CountNotify | +| SYS_ERROR_INVALID_PARTNER_ID_DETECTED | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 1089 | t2_event_d | +| SYS_ERROR_INVALID_PARTNER_ID_DETECTED | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 848 | t2_event_d | +| SYS_ERROR_INVALID_PARTNER_ID_RECOVERY_FAILURE | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 1114 | t2_event_d | +| SYS_ERROR_INVALID_PARTNER_ID_RECOVERY_FAILURE | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 873 | t2_event_d | +| SYS_ERROR_IPAOR | lan-manager-lite | source/lm/lm_main.c | 720 | t2_event_d | +| SYS_ERROR_iptable_corruption | test-and-diagnostic | scripts/selfheal_bootup.sh | 625 | t2CountNotify | +| SYS_ERROR_iptable_corruption | test-and-diagnostic | scripts/task_health_monitor.sh | 3581 | t2CountNotify | +| SYS_ERROR_iptable_corruption | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 471 | t2CountNotify | +| SYS_ERROR_linkLocalDad_failed | test-and-diagnostic | scripts/task_health_monitor.sh | 3875 | t2CountNotify | +| SYS_ERROR_LoadAbove2 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 169 | t2CountNotify | +| SYS_ERROR_LoadAbove3 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 173 | t2CountNotify | +| SYS_ERROR_LoadAbove4 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 177 | t2CountNotify | +| SYS_ERROR_LoadAbove5 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 181 | t2CountNotify | +| SYS_ERROR_LoadAbove8 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 185 | t2CountNotify | +| SYS_ERROR_LoadAbove9 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 189 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | meta-cmf-bananapi | meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh | 628 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | meta-cmf-bananapi | meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh | 665 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | opsLogUpload.sh | 348 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | opsLogUpload.sh | 482 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | onboardLogUpload.sh | 273 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | onboardLogUpload.sh | 315 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | uploadRDKBLogs.sh | 588 | t2CountNotify | +| SYS_ERROR_LOGUPLOAD_FAILED ⚠️ | sysint-broadband | uploadRDKBLogs.sh | 829 | t2CountNotify | +| SYS_ERROR_LOW_FREE_MEMORY | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 402 | t2CountNotify | +| SYS_ERROR_MemAbove550 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 91 | get_high_mem_processes→t2ValNotify | +| SYS_ERROR_MemAbove600 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 91 | get_high_mem_processes→t2ValNotify | +| SYS_ERROR_MissingMgmtCRPwdID | tr069-protocol-agent | source-embedded/DslhManagementServer/ccsp_management_server_pa_api.c | 303 | t2_event_d | +| SYS_ERROR_NoConnectivity_reboot ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/device/lib/rdk/logfiles.sh | 386 | t2CountNotify | +| SYS_ERROR_NoConnectivity_reboot ⚠️ | sysint-broadband | logfiles.sh | 500 | t2CountNotify | +| SYS_ERROR_NotGenMgmtCRPwdID | tr069-protocol-agent | source-embedded/DslhManagementServer/ccsp_management_server.c | 2603 | t2_event_d | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 247 | t2CountNotify | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 266 | t2CountNotify | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 285 | t2CountNotify | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 350 | t2CountNotify | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 369 | t2CountNotify | +| SYS_ERROR_NotRegisteredOnCMTS | test-and-diagnostic | scripts/corrective_action.sh | 386 | t2CountNotify | +| SYS_ERROR_NTP_UNSYNC | utopia | source/scripts/init/service.d/service_ntpd.sh | 295 | t2CountNotify | +| SYS_ERROR_NVRAM2_NOT_AVAILABLE | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 53 | t2CountNotify | +| SYS_ERROR_parodus_TimeStampExpired | test-and-diagnostic | scripts/task_health_monitor.sh | 2271 | t2CountNotify | +| SYS_ERROR_PartnerId_missing_sycfg | sysint-broadband | getpartnerid.sh | 50 | t2CountNotify | +| SYS_ERROR_PnM_Not_Responding | test-and-diagnostic | scripts/task_health_monitor.sh | 1077 | t2CountNotify | +| SYS_ERROR_PnM_Not_Responding | test-and-diagnostic | scripts/task_health_monitor.sh | 1101 | t2CountNotify | +| SYS_ERROR_PnM_Not_Responding | test-and-diagnostic | scripts/task_health_monitor.sh | 3128 | t2CountNotify | +| SYS_ERROR_PSM_Not_Registered | component-registry | source/CrSsp/ssp_dbus.c | 505 | t2_event_d | +| SYS_ERROR_PSMCrash_reboot ⚠️ | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 388 | t2CountNotify | +| SYS_ERROR_PSMCrash_reboot ⚠️ | test-and-diagnostic | scripts/selfheal_bootup.sh | 513 | t2CountNotify | +| SYS_ERROR_PSMCrash_reboot ⚠️ | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 402 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed | crashupload | c_sourcecode/src/upload/upload.c | 275 | t2CountNotify→t2_event_d | +| SYS_ERROR_SnmpCMHighCPU_reboot | test-and-diagnostic | scripts/resource_monitor.sh | 263 | t2CountNotify | +| SYS_ERROR_snmpSubagentcrash | test-and-diagnostic | scripts/task_health_monitor.sh | 2480 | t2CountNotify | +| SYS_ERROR_snmpSubagentcrash | test-and-diagnostic | scripts/task_health_monitor.sh | 2588 | t2CountNotify | +| SYS_ERROR_SYSCFG_Open_failed | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 5189 | t2_event_d | +| SYS_ERROR_SyscfgGet_retry_failed | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 5183 | t2_event_d | +| SYS_ERROR_SyscfgSet_retry_failed | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 2941 | t2_event_d | +| SYS_ERROR_syseventdBadState | test-and-diagnostic | scripts/task_health_monitor.sh | 2537 | t2CountNotify | +| SYS_ERROR_syseventdCrashed | test-and-diagnostic | scripts/task_health_monitor.sh | 2496 | t2CountNotify | +| SYS_ERROR_SYSTIME_FAIL | test-and-diagnostic | source/TandDSsp/current_time.c | 171 | t2_event_d | +| SYS_ERROR_SYSTIME_FAIL | test-and-diagnostic | source/TandDSsp/current_time.c | 431 | t2_event_d | +| SYS_ERROR_TMPFS_ABOVE85 | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 65 | t2CountNotify | +| SYS_ERROR_TR69_Not_Registered | component-registry | source/CCSP_CR/ccsp_cr_utility.c | 405 | t2_event_d | +| SYS_ERROR_wanmanager_crash_reboot | test-and-diagnostic | scripts/task_health_monitor.sh | 1418 | t2CountNotify | +| SYS_ERROR_WIFI_Not_Registered | component-registry | source/CrSsp/ssp_dbus.c | 509 | t2_event_d | +| SYS_ERROR_Xdns_restart | utopia | source/scripts/init/service.d/service_xdns.sh | 50 | t2CountNotify | +| SYS_ERROR_Zombie_dnsmasq | test-and-diagnostic | scripts/selfheal_aggressive.sh | 280 | t2CountNotify | +| SYS_ERROR_Zombie_dnsmasq | test-and-diagnostic | scripts/task_health_monitor.sh | 3697 | t2CountNotify | +| SYS_ERROR_Zombie_dnsmasq | test-and-diagnostic | scripts/task_health_monitor.sh | 3702 | t2CountNotify | +| SYS_ERROR_Zombie_dnsmasq | test-and-diagnostic | scripts/task_health_monitor.sh | 3717 | t2CountNotify | +| SYS_ERROR_Zombie_dnsmasq | test-and-diagnostic | scripts/task_health_monitor.sh | 3846 | t2CountNotify | +| SYS_INFO_bootup ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh | 876 | t2CountNotify | +| SYS_INFO_bootup ⚠️ | sysint-broadband | rdkbLogMonitor_cron.sh | 907 | t2CountNotify | +| SYS_INFO_bootup ⚠️ | sysint-broadband | rdkbLogMonitor.sh | 833 | t2CountNotify | +| SYS_INFO_BridgeMode | test-and-diagnostic | scripts/task_health_monitor.sh | 3430 | t2CountNotify | +| SYS_INFO_CANARY_Update | rdkfwupdater | src/flash.c | 396 | flashT2CountNotify→t2_event_d | +| SYS_INFO_CaptivePortal ⚠️ | dhcp-manager | source/DHCPServerUtils/DHCPv4Server/dhcp_server_functions.c | 1401 | t2_event_d | +| SYS_INFO_CaptivePortal ⚠️ | dhcp-manager | source/DHCPServerUtils/DHCPv4Server/dhcp_server_functions.c | 1421 | t2_event_d | +| SYS_INFO_CaptivePortal ⚠️ | utopia | source/service_dhcp/dhcp_server_functions.c | 1425 | t2_event_d | +| SYS_INFO_CaptivePortal ⚠️ | utopia | source/service_dhcp/dhcp_server_functions.c | 1445 | t2_event_d | +| SYS_INFO_CaptivePortal ⚠️ | utopia | source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh | 994 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 825 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 538 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 620 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | c_sourcecode/src/scanner/scanner.c | 605 | t2CountNotify→t2_event_d | +| SYS_INFO_CrashedContainer | crashupload | runDumpUpload.sh | 819 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | uploadDumps_TestCases.md | 1617 | t2CountNotify | +| SYS_INFO_Create_GRE_Tunnel | hotspot | source/hotspotfd/hotspotfd.c | 2134 | t2_event_d | +| SYS_INFO_DBCleanup | test-and-diagnostic | scripts/syscfg_cleanup.sh | 91 | t2CountNotify | +| SYS_INFO_DEFER_CANARY_REBOOT | rdkfwupdater | src/flash.c | 392 | flashT2CountNotify→t2_event_d | +| SYS_INFO_differentSSID | test-and-diagnostic | scripts/getSsidNames.sh | 96 | t2CountNotify | +| SYS_INFO_differentSSID | test-and-diagnostic | scripts/getSsidNames.sh | 118 | t2CountNotify | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1156 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1226 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_DNS_updated | wan-manager | source/TR-181/middle_layer_src/wanmgr_rdkbus_apis.c | 2156 | t2_event_d | +| SYS_INFO_DNSSTART_split | wan-manager | source/TR-181/middle_layer_src/wanmgr_rdkbus_apis.c | 2173 | t2_event_s | +| SYS_INFO_ERouter_Mode_2 ⚠️ | cable-modem-agent | source/CMAgentSsp/gw_prov_sm.c | 1081 | t2_event_d | +| SYS_INFO_ERouter_Mode_2 ⚠️ | gw-provisioning-application | source/gw_prov_sm.c | 1017 | t2_event_d | +| SYS_INFO_ErouterMode2 ⚠️ | cable-modem-agent | source/CMAgentSsp/gw_prov_sm.c | 1719 | t2_event_d | +| SYS_INFO_ErouterMode2 ⚠️ | gw-provisioning-application | source/gw_prov_sm.c | 1629 | t2_event_d | +| SYS_INFO_ErouterMode2 ⚠️ | gw-provisioning-application | source/gw_prov_sm_generic.c | 802 | t2_event_d | +| SYS_INFO_FRMode | utopia | source/scripts/init/src/apply_system_defaults_psm/apply_system_defaults_psm.c | 172 | t2_event_d | +| SYS_INFO_FRMode | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 3498 | t2_event_d | +| SYS_INFO_FRMode | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults_syscfg.c | 177 | t2_event_d | +| SYS_INFO_FW_Dwld_500Error | xconf-client | source/cm_http_dl.c | 481 | t2_event_d | +| SYS_INFO_Hostname_changed | lan-manager-lite | source/lm/lm_wrapper.c | 2020 | t2_event_d | +| SYS_INFO_Hostname_changed | lan-manager-lite | source/lm/lm_wrapper.c | 2142 | t2_event_d | +| SYS_INFO_Hotspot_MaxClients | hotspot | source/hotspotfd/dhcpsnooper.c | 834 | t2_event_d | +| SYS_INFO_INTERNETRDY_split | utopia | source/scripts/init/service.d/service_connectivitycheck.sh | 104 | t2ValNotify | +| SYS_INFO_Invoke_batterymode ⚠️ | telemetry | source/testApp/testCommonLibApi.c | 75 | t2_event_s | +| SYS_INFO_Invoke_batterymode ⚠️ | test-and-diagnostic | scripts/resource_monitor.sh | 421 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | meta-cmf-bananapi | meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh | 623 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | sysint-broadband | opsLogUpload.sh | 396 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | sysint-broadband | opsLogUpload.sh | 471 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | sysint-broadband | onboardLogUpload.sh | 311 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | sysint-broadband | uploadRDKBLogs.sh | 673 | t2CountNotify | +| SYS_INFO_LOGS_UPLOADED ⚠️ | sysint-broadband | uploadRDKBLogs.sh | 807 | t2CountNotify | +| SYS_INFO_MESHWIFI_DISABLED | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 4935 | t2_event_d | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1028 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1050 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_NoIPv6_Address | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 359 | t2CountNotify | +| SYS_INFO_NoIPv6_Address | test-and-diagnostic | scripts/self_heal_connectivity_test.sh | 414 | t2CountNotify | +| SYS_INFO_NoIPv6_Address | test-and-diagnostic | scripts/device/tccbr/self_heal_connectivity_test.sh | 291 | t2CountNotify | +| SYS_INFO_NTP_SYNC_split | utopia | source/scripts/init/service.d/service_ntpd.sh | 279 | t2ValNotify | +| SYS_INFO_NTPDELAY_split | sysint-broadband | ntp-data-collector.sh | 25 | t2ValNotify | +| SYS_INFO_NTPSTART_split | utopia | source/scripts/init/service.d/service_ntpd.sh | 632 | t2ValNotify | +| SYS_INFO_S3CoreUploaded | crashupload | c_sourcecode/src/upload/upload.c | 297 | t2CountNotify→t2_event_d | +| SYS_INFO_sameSSID | test-and-diagnostic | scripts/getSsidNames.sh | 93 | t2CountNotify | +| SYS_INFO_sameSSID | test-and-diagnostic | scripts/getSsidNames.sh | 115 | t2CountNotify | +| SYS_INFO_SETSYSTIME_split ⚠️ | test-and-diagnostic | source/TandDSsp/current_time.c | 181 | t2_event_s | +| SYS_INFO_SETSYSTIME_split ⚠️ | utopia | source/scripts/init/service.d/service_systemtimeset.sh | 44 | t2ValNotify | +| SYS_INFO_snmp_subagent_restart | test-and-diagnostic | scripts/corrective_action.sh | 745 | t2CountNotify | +| SYS_INFO_snmp_subagent_restart | test-and-diagnostic | scripts/corrective_action.sh | 756 | t2CountNotify | +| SYS_INFO_snmpsubagent_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 225 | t2CountNotify | +| SYS_INFO_snmpsubagent_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/systemd/sysd_process_monitor.sh | 72 | t2CountNotify | +| SYS_INFO_StaticIP_setMso | utopia | source/service_dhcp/service_ipv4.c | 940 | t2_event_d | +| SYS_INFO_StaticIP_setMso | utopia | source/scripts/init/service.d/service_ipv4.sh | 578 | t2CountNotify | +| SYS_INFO_StaticIP_setMso | utopia | source/scripts/init/service.d/service_ipv4_bci.sh | 477 | t2CountNotify | +| SYS_INFO_SW_upgrade_reboot ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh | 879 | t2CountNotify | +| SYS_INFO_SW_upgrade_reboot ⚠️ | sysint-broadband | rdkbLogMonitor_cron.sh | 910 | t2CountNotify | +| SYS_INFO_SW_upgrade_reboot ⚠️ | sysint-broadband | rdkbLogMonitor.sh | 836 | t2CountNotify | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 434 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 439 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_SYSBUILD | test-and-diagnostic | source/TandDSsp/current_time.c | 274 | t2_event_d | +| SYS_INFO_SYSCFG_get_passed | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 5157 | t2_event_d | +| SYS_INFO_SYSLKG_split | test-and-diagnostic | source/TandDSsp/current_time.c | 334 | t2_event_s | +| SYS_INFO_TGZDUMP | crashupload | c_sourcecode/src/scanner/scanner.c | 489 | t2CountNotify→t2_event_d | +| SYS_INFO_TGZDUMP | crashupload | runDumpUpload.sh | 792 | t2CountNotify | +| SYS_INFO_TGZDUMP | crashupload | uploadDumps_TestCases.md | 1641 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh | 336 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh | 546 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh | 665 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | sysint-broadband | rdkbLogMonitor_cron.sh | 318 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | sysint-broadband | rdkbLogMonitor_cron.sh | 490 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | sysint-broadband | rdkbLogMonitor.sh | 249 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | sysint-broadband | rdkbLogMonitor.sh | 463 | t2CountNotify | +| SYS_INFO_WaitingFor_Stack_Init ⚠️ | sysint-broadband | rdkbLogMonitor.sh | 584 | t2CountNotify | +| SYS_INFO_WanManager_HW_reconfigure_reboot | test-and-diagnostic | scripts/task_health_monitor.sh | 3902 | t2CountNotify | +| SYS_INFO_XDNS_RESOLV_CONF_SYNC | xdns | source/dmlxdns/cosa_xdns_apis.c | 493 | t2_event_d | +| SYS_INVALID_PARTNER_ID_RECOVERY_SUCCESS | utopia | source/scripts/init/src/apply_system_defaults_helper.c | 1092 | t2_event_d | +| SYS_INVALID_PARTNER_ID_RECOVERY_SUCCESS | utopia | source/scripts/init/src/apply_system_defaults/apply_system_defaults.c | 851 | t2_event_d | +| SYS_SH_akerCrash | test-and-diagnostic | scripts/task_health_monitor.sh | 2312 | t2CountNotify | +| SYS_SH_brlan0_restarted | test-and-diagnostic | scripts/selfheal_aggressive.sh | 505 | t2CountNotify | +| SYS_SH_brlan0_restarted | test-and-diagnostic | scripts/selfheal_aggressive.sh | 566 | t2CountNotify | +| SYS_SH_brlan0_restarted | test-and-diagnostic | scripts/task_health_monitor.sh | 2785 | t2CountNotify | +| SYS_SH_brlan0_restarted | test-and-diagnostic | scripts/task_health_monitor.sh | 2846 | t2CountNotify | +| SYS_SH_CMReset_PingFailed ⚠️ | telemetry | source/testApp/testCommonLibApi.c | 71 | t2_event_s | +| SYS_SH_CMReset_PingFailed ⚠️ | test-and-diagnostic | scripts/corrective_action.sh | 428 | t2CountNotify | +| SYS_SH_CUJO_restart | test-and-diagnostic | scripts/corrective_action.sh | 915 | t2CountNotify | +| SYS_SH_DhcpArp_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 247 | t2CountNotify | +| SYS_SH_DhcpArp_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 274 | t2CountNotify | +| SYS_SH_DhcpArp_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/systemd/sysd_process_monitor.sh | 94 | t2CountNotify | +| SYS_SH_DhcpArpProcess_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1762 | t2CountNotify | +| SYS_SH_DhcpSnooper_restart | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 268 | t2CountNotify | +| SYS_SH_Dibbler_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 722 | t2CountNotify | +| SYS_SH_Dibbler_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 801 | t2CountNotify | +| SYS_SH_Dibbler_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 3956 | t2CountNotify | +| SYS_SH_Dibbler_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 4021 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | test-and-diagnostic | scripts/selfheal_bootup.sh | 735 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | test-and-diagnostic | scripts/selfheal_aggressive.sh | 253 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 3663 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 3744 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 520 | t2CountNotify | +| SYS_SH_dnsmasq_restart ⚠️ | utopia | source/pmon/pmon.c | 183 | t2_event_d | +| SYS_SH_Dropbear_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1378 | t2CountNotify | +| SYS_SH_Dropbear_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1389 | t2CountNotify | +| SYS_SH_Dropbear_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 2335 | t2CountNotify | +| SYS_SH_FirewallRecovered | utopia | source/scripts/init/service.d/misc_handler.sh | 60 | t2CountNotify | +| SYS_SH_HomeSecurity_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1480 | t2CountNotify | +| SYS_SH_HomeSecurity_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1486 | t2CountNotify | +| SYS_SH_lighttpdCrash ⚠️ | telemetry | source/testApp/testCommonLibApi.c | 77 | t2_event_d | +| SYS_SH_lighttpdCrash ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 2194 | t2CountNotify | +| SYS_SH_lighttpdCrash ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 2395 | t2CountNotify | +| SYS_SH_LM_restart ⚠️ | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 213 | t2CountNotify | +| SYS_SH_LM_restart ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 1250 | t2CountNotify | +| SYS_SH_LM_restart ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 1673 | t2CountNotify | +| SYS_SH_MOCA_add_brlan0 | test-and-diagnostic | scripts/task_health_monitor.sh | 1008 | t2CountNotify | +| SYS_SH_MOCA_add_brlan10 | test-and-diagnostic | scripts/task_health_monitor.sh | 1020 | t2CountNotify | +| SYS_SH_MTA_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1186 | t2CountNotify | +| SYS_SH_MTA_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1595 | t2CountNotify | +| SYS_SH_PAM_CRASH_RESTART | test-and-diagnostic | scripts/selfheal_bootup.sh | 552 | t2CountNotify | +| SYS_SH_PAM_CRASH_RESTART | test-and-diagnostic | scripts/task_health_monitor.sh | 1173 | t2CountNotify | +| SYS_SH_PAM_CRASH_RESTART | test-and-diagnostic | scripts/task_health_monitor.sh | 1586 | t2CountNotify | +| SYS_SH_PAM_CRASH_RESTART | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 424 | t2CountNotify | +| SYS_SH_PAM_restart | test-and-diagnostic | scripts/corrective_action.sh | 767 | t2CountNotify | +| SYS_SH_Parodus_Killed | test-and-diagnostic | scripts/task_health_monitor.sh | 2285 | t2CountNotify | +| SYS_SH_Parodus_Killed | test-and-diagnostic | scripts/task_health_monitor.sh | 2296 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/selfheal_bootup.sh | 426 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/selfheal_bootup.sh | 430 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/selfheal_aggressive.sh | 215 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/selfheal_aggressive.sh | 219 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 765 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 773 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 848 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 852 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 4696 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/task_health_monitor.sh | 4699 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 319 | t2CountNotify | +| SYS_SH_pingPeerIP_Failed | test-and-diagnostic | scripts/device/tccbr/selfheal_bootup.sh | 323 | t2CountNotify | +| SYS_SH_PSMHung | test-and-diagnostic | scripts/task_health_monitor.sh | 1152 | t2CountNotify | +| SYS_SH_PSMProcess_restart | test-and-diagnostic | scripts/corrective_action.sh | 834 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_routed/service_routed.c | 237 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_dhcp/service_ipv4.c | 1559 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_dhcp/lan_handler.c | 692 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_dhcp/lan_handler.c | 789 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/utapi/lib/utapi.c | 2805 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_wan/service_wan.c | 1118 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_wan/service_wan.c | 1854 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/service_multinet/ev_access.c | 213 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/trigger/trigger.c | 461 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/trigger/trigger.c | 564 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/trigger/trigger.c | 705 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/trigger/trigger.c | 720 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/trigger/trigger.c | 826 | t2_event_d | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_lan.sh | 687 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/iot_service.sh | 80 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/l2tp_wan.sh | 121 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/l2tp_wan.sh | 207 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/telstra_wan.sh | 99 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/static_wan.sh | 70 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/static_wan.sh | 98 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/pptp_wan.sh | 139 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/pptp_wan.sh | 202 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/dhcp_wan.sh | 72 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/dhcp_wan.sh | 120 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_wan/pppoe_wan.sh | 139 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_multinet/handle_gre.sh | 912 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_multinet/handle_gre.sh | 1187 | t2CountNotify | +| SYS_SH_RDKB_FIREWALL_RESTART | utopia | source/scripts/init/service.d/service_lan/dhcp_lan.sh | 416 | t2CountNotify | +| SYS_SH_ResourceMonitor_restart | test-and-diagnostic | scripts/syscfg_recover.sh | 83 | t2CountNotify | +| SYS_SH_ResourceMonitor_restart | test-and-diagnostic | scripts/resource_monitor_recover.sh | 39 | t2CountNotify | +| SYS_SH_SERestart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1638 | t2CountNotify | +| SYS_SH_SERestart | test-and-diagnostic | scripts/task_health_monitor.sh | 492 | t2CountNotify | +| SYS_SH_SNMP_NotRunning | test-and-diagnostic | scripts/task_health_monitor.sh | 1289 | t2CountNotify | +| SYS_SH_SNMP_NotRunning | test-and-diagnostic | scripts/task_health_monitor.sh | 1733 | t2CountNotify | +| SYS_SH_TR69Restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1233 | t2CountNotify | +| SYS_SH_WebPA_restart ⚠️ | OneWifi | scripts/process_monitor_atom.sh | 870 | t2CountNotify | +| SYS_SH_WebPA_restart ⚠️ | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 294 | t2CountNotify | +| SYS_SH_WebPA_restart ⚠️ | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/systemd/sysd_process_monitor.sh | 112 | t2CountNotify | +| SYS_SH_WIFIAGENT_restart | test-and-diagnostic | scripts/corrective_action.sh | 779 | t2CountNotify | +| SYS_SH_XDNS_dnsoverride_miss_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1359 | t2CountNotify | +| SYS_SH_XDNS_dnsoverride_miss_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1709 | t2CountNotify | +| SYS_SH_XDNS_dnsoverride_populate_fail | test-and-diagnostic | scripts/task_health_monitor.sh | 1365 | t2CountNotify | +| SYS_SH_XDNS_dnsoverride_populate_fail | test-and-diagnostic | scripts/task_health_monitor.sh | 1715 | t2CountNotify | +| SYS_SH_Zebra_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 4116 | t2CountNotify | +| SYS_WARN_connectivitycheck_nourl_set | utopia | source/scripts/init/service.d/service_connectivitycheck.sh | 64 | t2CountNotify | +| SYS_WARN_connectivitycheck_time_expire | utopia | source/scripts/init/service.d/service_connectivitycheck.sh | 84 | t2CountNotify | +| syscfg_partner_split | sysint-broadband | log_factoryPartnerId.sh | 43 | t2ValNotify | +| SYST_ERR_ | sysint | lib/rdk/core_shell.sh | 132 | t2CountNotify | +| SYST_ERR_10Times_reboot | sysint | lib/rdk/update_previous_reboot_info.sh | 127 | t2CountNotify | +| SYST_ERR_10Times_reboot | sysint | lib/rdk/update_previous_reboot_info.sh | 140 | t2CountNotify | +| SYST_ERR_CCNotRepsonding_reboot | sysint | lib/rdk/rebootNow.sh | 140 | t2CountNotify | +| SYST_ERR_cdl_ssr | rdkfwupdater | src/rdkv_upgrade.c | 153 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 594 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 646 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 661 | t2CountNotify | +| SYST_ERR_CECBusEx | hdmicec | ccec/src/MessageDecoder.cpp | 194 | t2_event_s | +| SYST_ERR_CompFail | crashupload | runDumpUpload.sh | 1021 | t2CountNotify | +| SYST_ERR_COREGZIP | sysint | lib/rdk/core_shell.sh | 177 | t2CountNotify | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 216 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 344 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 433 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 520 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 370 | t2CountNotify | +| SYST_ERR_Cyclic_reboot | sysint | lib/rdk/rebootNow.sh | 279 | t2CountNotify | +| SYST_ERR_DiffFWCTN_FLdnld | rdkfwupdater | src/chunk.c | 175 | t2CountNotify→t2_event_d | +| SYST_ERR_DNSFileEmpty | sysint | lib/rdk/networkConnectionRecovery.sh | 339 | t2CountNotify | +| SYST_ERR_DSMGR_reboot | sysint | lib/rdk/rebootNow.sh | 152 | t2CountNotify | +| SYST_ERR_FW_RFC_disabled | sysint | lib/rdk/userInitiatedFWDnld.sh | 694 | t2CountNotify | +| SYST_ERR_FWCTNFetch | rdkfwupdater | src/chunk.c | 114 | t2CountNotify→t2_event_d | +| SYST_ERR_FWdnldFail | sysint | lib/rdk/userInitiatedFWDnld.sh | 401 | t2ValNotify | +| SYST_ERR_IARMDEMON_reboot | sysint | lib/rdk/rebootNow.sh | 155 | t2CountNotify | +| SYST_ERR_imageflsfail | rdkfwupdater | src/flash.c | 141 | flashT2CountNotify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 166 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 552 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 657 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 780 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 871 | t2CountNotify | +| SYST_ERR_MaintNetworkFail | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 455 | t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | c_sourcecode/src/archive/archive.c | 306 | t2CountNotify→t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | runDumpUpload.sh | 979 | t2CountNotify | +| SYST_ERR_OPTFULL | sysint | lib/rdk/disk_threshold_check.sh | 354 | t2CountNotify | +| SYST_ERR_OverflowMon_crash | sysint | lib/rdk/core_shell.sh | 88 | t2CountNotify | +| SYST_ERR_PC_Conn169 | sysint | lib/rdk/core_shell.sh | 91 | t2CountNotify | +| SYST_ERR_PC_MAF | sysint | lib/rdk/core_shell.sh | 94 | t2CountNotify | +| SYST_ERR_PC_RBI | sysint | lib/rdk/core_shell.sh | 97 | t2CountNotify | +| SYST_ERR_PC_Systemd | sysint | lib/rdk/core_shell.sh | 100 | t2CountNotify | +| SYST_ERR_PC_TTSEngine | sysint | lib/rdk/core_shell.sh | 103 | t2CountNotify | +| SYST_ERR_PDRI_VFail | sysint | lib/rdk/xconfImageCheck.sh | 453 | t2CountNotify | +| SYST_ERR_PDRIUpg_failure | rdkfwupdater | src/rdkv_upgrade.c | 589 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_PrevCDL_InProg | sysint | lib/rdk/swupdate_utility.sh | 157 | t2CountNotify | +| SYST_ERR_Process_Crash_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 368 | t2ValNotify→t2_event_s | +| SYST_ERR_Process_Crash_accum | crashupload | runDumpUpload.sh | 760 | t2ValNotify | +| SYST_ERR_Process_Crash_accum | crashupload | uploadDumps_TestCases.md | 1589 | t2ValNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | c_sourcecode/src/scanner/scanner.c | 369 | t2CountNotify→t2_event_d | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | runDumpUpload.sh | 761 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | uploadDumps_TestCases.md | 1590 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | sysint | lib/rdk/core_shell.sh | 81 | t2CountNotify | +| SYST_ERR_RDMMISSING | rdm-agent | src/rdm_downloadutils.c | 118 | t2ValNotify→t2_event_s | +| SYST_ERR_RFC | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1652 | t2_event_d | +| SYST_ERR_Rmfstreamer_crash | sysint | lib/rdk/core_shell.sh | 128 | t2CountNotify | +| SYST_ERR_Rmfstreamer_reboot | sysint | lib/rdk/rebootNow.sh | 158 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 137 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 161 | t2CountNotify | +| SYST_ERR_syslogng_crash | sysint | lib/rdk/core_shell.sh | 109 | t2CountNotify | +| SYST_ERR_VodApp_restart | sysint | lib/rdk/core_shell.sh | 106 | t2CountNotify | +| SYST_ERR_XCALDevice_crash | sysint | lib/rdk/core_shell.sh | 124 | t2CountNotify | +| SYST_ERR_Xconf28 | sysint | lib/rdk/xconfImageCheck.sh | 512 | t2CountNotify | +| SYST_ERR_Xconf28 | sysint | lib/rdk/xconfImageCheck.sh | 561 | t2CountNotify | +| SYST_ERR_xraudio_crash | sysint | lib/rdk/core_shell.sh | 112 | t2CountNotify | +| SYST_ERROR_WAI_InitERR | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 648 | t2_event_d | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkFwupdateMgr.c | 1132 | t2CountNotify→t2_event_d | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkv_main.c | 1090 | t2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 733 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 591 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 667 | t2CountNotify | +| SYST_INFO_CDLSuccess ⚠️ | rdkfwupdater | src/flash.c | 137 | flashT2CountNotify→t2_event_d | +| SYST_INFO_CDLSuccess ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 664 | t2CountNotify | +| SYST_INFO_Core_accum | sysint | lib/rdk/core_shell.sh | 166 | t2ValNotify | +| SYST_INFO_CoreFull_accum | sysint | lib/rdk/core_shell.sh | 157 | t2ValNotify | +| SYST_INFO_CoreIMP_accum | sysint | lib/rdk/core_shell.sh | 158 | t2ValNotify | +| SYST_INFO_CoreNotProcessed | sysint | lib/rdk/core_shell.sh | 365 | t2CountNotify | +| SYST_INFO_CoreProcessed | sysint | lib/rdk/core_shell.sh | 184 | t2CountNotify | +| SYST_INFO_CoreProcessed_accum | sysint | lib/rdk/core_shell.sh | 185 | t2ValNotify | +| SYST_INFO_CoreUpldSkipped | crashupload | c_sourcecode/src/utils/system_utils.c | 145 | t2CountNotify→t2_event_d | +| SYST_INFO_CoreUpldSkipped | crashupload | runDumpUpload.sh | 662 | t2CountNotify | +| SYST_INFO_CrashedProc_accum | sysint | lib/rdk/core_shell.sh | 150 | t2ValNotify | +| SYST_INFO_CURL6 | crashupload | c_sourcecode/src/upload/upload.c | 278 | t2CountNotify→t2_event_d | +| SYST_INFO_ETHConn | sysint | lib/rdk/networkConnectionRecovery.sh | 162 | t2CountNotify | +| SYST_INFO_FetchFWCTN | rdkfwupdater | src/chunk.c | 95 | t2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 605 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 423 | t2CountNotify | +| SYST_INFO_FWUpgrade_Exit ⚠️ | rdkfwupdater | src/device_status_helper.c | 80 | t2CountNotify→t2_event_d | +| SYST_INFO_FWUpgrade_Exit ⚠️ | sysint | lib/rdk/swupdate_utility.sh | 130 | t2CountNotify | +| SYST_INFO_Http302 | rdkfwupdater | src/rdkv_upgrade.c | 156 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_ImgFlashOK | rdkfwupdater | src/flash.c | 163 | flashT2CountNotify→t2_event_d | +| SYST_INFO_JSPPShutdown | entservices-monitor | plugin/Monitor.h | 963 | t2_event_d | +| SYST_INFO_lu_success ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 135 | t2_count_notify→t2_event_d | +| SYST_INFO_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 517 | t2CountNotify | +| SYST_INFO_LUattempt ⚠️ | dcm-agent | uploadstblogs/src/retry_logic.c | 55 | t2_count_notify→t2_event_d | +| SYST_INFO_LUattempt ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 511 | t2CountNotify | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1929 | t2_event_d | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 2745 | t2_event_d | +| SYST_INFO_MemAvailable_split | sysint | lib/rdk/system_info_collector.sh | 70 | t2ValNotify | +| SYST_INFO_minidumpUpld | crashupload | c_sourcecode/src/upload/upload.c | 429 | t2CountNotify→t2_event_d | +| SYST_INFO_minidumpUpld | crashupload | runDumpUpload.sh | 1141 | t2CountNotify | +| SYST_INFO_minidumpUpld | crashupload | uploadDumps_TestCases.md | 1795 | t2CountNotify | +| SYST_INFO_mtls_xpki ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 100 | t2_count_notify→t2_event_d | +| SYST_INFO_mtls_xpki ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 355 | t2CountNotify | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkFwupdateMgr.c | 670 | t2CountNotify→t2_event_d | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkv_main.c | 619 | t2CountNotify→t2_event_d | +| SYST_INFO_NotifyMotion | entservices-peripherals | MotionDetection/MotionDetection.cpp | 461 | t2_event_d | +| SYST_INFO_PartnerId | sysint | lib/rdk/getDeviceId.sh | 77 | t2ValNotify | +| SYST_INFO_PC_RF4CE | sysint | lib/rdk/core_shell.sh | 115 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | dcm-agent | uploadstblogs/src/strategies.c | 953 | t2_count_notify→t2_event_d | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 883 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 886 | t2CountNotify | +| SYST_INFO_PDRIUpgSuccess | rdkfwupdater | src/rdkv_upgrade.c | 629 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_PRXR_Ver_split | rdkfwupdater | src/json_process.c | 281 | t2ValNotify→t2_event_s | +| SYST_INFO_RedStateRecovery | rdkfwupdater | src/rdkv_upgrade.c | 1058 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_RedstateSet | rdkfwupdater | src/device_status_helper.c | 370 | t2CountNotify→t2_event_d | +| SYST_INFO_SAME_FWCTN | rdkfwupdater | src/chunk.c | 101 | t2CountNotify→t2_event_d | +| SYST_INFO_SigDump_split | sysint | lib/rdk/core_shell.sh | 152 | t2ValNotify | +| SYST_INFO_SOMT | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 477 | t2_event_d | +| SYST_INFO_SwapCached_split | sysint | lib/rdk/system_info_collector.sh | 80 | t2ValNotify | +| SYST_INFO_SwapFree_split | sysint | lib/rdk/system_info_collector.sh | 86 | t2ValNotify | +| SYST_INFO_SwapTotal_split | sysint | lib/rdk/system_info_collector.sh | 83 | t2ValNotify | +| SYST_INFO_swdlSameImg ⚠️ | rdkfwupdater | src/device_status_helper.c | 912 | t2CountNotify→t2_event_d | +| SYST_INFO_swdlSameImg ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 515 | t2CountNotify | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | rdkfwupdater | src/device_status_helper.c | 905 | t2CountNotify→t2_event_d | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 519 | t2CountNotify | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkFwupdateMgr.c | 1181 | t2CountNotify→t2_event_d | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkv_main.c | 1123 | t2CountNotify→t2_event_d | +| SYST_INFO_SYSBUILD | systemtimemgr | systimerfactory/rdkdefaulttimesync.cpp | 131 | t2CountNotify→t2_event_d | +| SYST_INFO_Thrtl_Enable | rdkfwupdater | src/rdkv_upgrade.c | 989 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_TLS_xconf | rdkfwupdater | src/rdkv_upgrade.c | 978 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 144 | t2CountNotify | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 155 | t2CountNotify | +| SYST_INFO_Xconf200 | sysint | lib/rdk/xconfImageCheck.sh | 514 | t2CountNotify | +| SYST_INFO_Xconf200 | sysint | lib/rdk/xconfImageCheck.sh | 563 | t2CountNotify | +| SYST_INFO_XCONFConnect ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 378 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_XCONFConnect ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 505 | t2CountNotify | +| SYST_SWDL_Retry_split | sysint | lib/rdk/userInitiatedFWDnld.sh | 598 | t2ValNotify | +| SYST_WARN_CompFail | crashupload | c_sourcecode/src/archive/archive.c | 414 | t2ValNotify→t2_event_s | +| SYST_WARN_CompFail | crashupload | runDumpUpload.sh | 1012 | t2CountNotify | +| SYST_WARN_CoreNP_accum | sysint | lib/rdk/core_shell.sh | 366 | t2ValNotify | +| SYST_WARN_dcm_curl28 | sysint | lib/rdk/xconfImageCheck.sh | 416 | t2CountNotify | +| SYST_WARN_GW100PERC_PACKETLOSS | sysint | lib/rdk/networkConnectionRecovery.sh | 249 | t2CountNotify | +| SYST_WARN_NoMinidump | crashupload | c_sourcecode/src/utils/lock_manager.c | 42 | t2CountNotify→t2_event_d | +| SYST_WARN_NoMinidump | crashupload | runDumpUpload.sh | 231 | t2CountNotify | +| SYST_WARN_UPGD_SKIP ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 921 | t2ValNotify→t2_event_s | +| SYST_WARN_UPGD_SKIP ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 158 | t2ValNotify | +| TEST_EVENT_1 | telemetry | source/testApp/testCommonLibApi.c | 79 | t2_event_d | +| TEST_EVENT_2 | telemetry | source/testApp/testCommonLibApi.c | 81 | t2_event_s | +| TEST_lu_success ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 532 | t2_count_notify→t2_event_d | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 619 | t2CountNotify | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 648 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/cbr_firmwareDwnld.sh | 885 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/cbr_firmwareDwnld.sh | 1075 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb6_firmwareDwnld.sh | 985 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb6_firmwareDwnld.sh | 1180 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb3_firmwareDwnld.sh | 745 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb3_firmwareDwnld.sh | 933 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xf3_firmwareDwnld.sh | 945 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xf3_firmwareDwnld.sh | 1136 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 961 | t2CountNotify | +| Test_StartEndEqual | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 1150 | t2CountNotify | +| Test_SWReset | sysint | lib/rdk/update_previous_reboot_info.sh | 201 | t2CountNotify | +| TimeZone_split | sysint | lib/rdk/getTimeZone.sh | 69 | t2ValNotify | +| TMPFS_USAGE_ATOM | sysint-broadband | log_mem_cpu_info_atom.sh | 158 | t2ValNotify | +| TMPFS_USAGE_ATOM | sysint-broadband | log_mem_cpu_info_atom.sh | 169 | t2ValNotify | +| TMPFS_USAGE_ATOM_PERIODIC | sysint-broadband | log_mem_cpu_info_atom.sh | 154 | t2ValNotify | +| TMPFS_USAGE_PERIODIC | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 59 | t2ValNotify | +| TMPFS_USE_PERCENTAGE_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 73 | t2ValNotify | +| TopCPU_split | test-and-diagnostic | scripts/resource_monitor.sh | 174 | t2ValNotify | +| TopCPU_split | test-and-diagnostic | scripts/resource_monitor.sh | 289 | t2ValNotify | +| Total_2G_PodClients_split | OneWifi | scripts/mesh_status.sh | 36 | t2ValNotify | +| Total_5G_PodClients_split | OneWifi | scripts/mesh_status.sh | 38 | t2ValNotify | +| Total_devices_connected_split ⚠️ | lan-manager-lite | source/lm/lm_main.c | 2786 | t2_event_d | +| Total_devices_connected_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 19 | t2ValNotify | +| Total_devices_connected_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 32 | t2ValNotify | +| Total_Ethernet_Clients_split | lan-manager-lite | source/lm/lm_main.c | 2790 | t2_event_d | +| Total_MoCA_Clients_split | lan-manager-lite | source/lm/lm_main.c | 2792 | t2_event_d | +| Total_offline_clients_split ⚠️ | lan-manager-lite | source/lm/lm_main.c | 2788 | t2_event_d | +| Total_offline_clients_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 18 | t2ValNotify | +| Total_offline_clients_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 31 | t2ValNotify | +| Total_online_clients_split | lan-manager-lite | source/lm/lm_main.c | 2787 | t2_event_d | +| Total_wifi_clients_split ⚠️ | lan-manager-lite | source/lm/lm_main.c | 2789 | t2_event_d | +| Total_wifi_clients_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 20 | t2ValNotify | +| Total_wifi_clients_split ⚠️ | meta-rdk-qcom (patch) | meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch | 33 | t2ValNotify | +| TR69HOSTIF_GET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 171 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 160 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 205 | t2ValNotify→t2_event_s | +| TR69HOSTIF_SET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 260 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 249 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 291 | t2ValNotify→t2_event_s | +| TrueStatic_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_apis_util.c | 1885 | t2_event_d | +| TrueStatic_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_apis_util.c | 1891 | t2_event_d | +| TrueStatic_NotSupported | provisioning-and-management | source/TR-181/middle_layer_src/cosa_x_cisco_com_security_dml.c | 1775 | t2_event_d | +| UPDays_split | test-and-diagnostic | scripts/uptime.sh | 76 | t2ValNotify | +| USED_CPU_ATOM_split ⚠️ | sysint-broadband | log_mem_cpu_info_atom.sh | 129 | t2ValNotify | +| USED_CPU_ATOM_split ⚠️ | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 224 | t2ValNotify | +| USED_MEM_ATOM_split ⚠️ | sysint-broadband | log_mem_cpu_info_atom.sh | 98 | t2ValNotify | +| USED_MEM_ATOM_split ⚠️ | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 107 | t2ValNotify | +| UsedCPU_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 222 | t2ValNotify | +| UsedMem_split | test-and-diagnostic | scripts/log_mem_cpu_info.sh | 105 | t2ValNotify | +| vmstats_split | sysint | lib/rdk/vm-statistics.sh | 32 | t2ValNotify | +| WAN_FAILOVER_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4413 | t2_event_d | +| WAN_FAILOVER_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4430 | t2_event_d | +| WAN_FAILOVER_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4641 | t2_event_d | +| WAN_FAILOVER_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4688 | t2_event_d | +| WAN_FAILOVER_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4747 | t2_event_d | +| WAN_FAILOVER_SUCCESS_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 4466 | t2_event_d | +| WAN_RESTORE_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 3110 | t2_event_d | +| WAN_RESTORE_FAIL_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 3137 | t2_event_d | +| WAN_RESTORE_SUCCESS_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 1401 | t2_event_d | +| WAN_RESTORE_SUCCESS_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 3154 | t2_event_d | +| WAN_RESTORE_SUCCESS_COUNT | wan-manager | source/WanManager/wanmgr_policy_autowan_impl.c | 3417 | t2_event_d | +| Wifi_2G_utilization_split | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 246 | t2ValNotify | +| Wifi_2G_utilization_split | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 259 | t2ValNotify | +| Wifi_5G_utilization_split | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 245 | t2ValNotify | +| Wifi_5G_utilization_split | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 277 | t2ValNotify | +| WIFI_ERROR_atomConsoleDown_2G | test-and-diagnostic | scripts/getSsidNames.sh | 54 | t2CountNotify | +| WIFI_ERROR_atomConsoleDown_5G | test-and-diagnostic | scripts/getSsidNames.sh | 63 | t2CountNotify | +| WIFI_ERROR_atomConsoleDown_6G | test-and-diagnostic | scripts/getSsidNames.sh | 74 | t2CountNotify | +| WIFI_ERROR_DMCLI_crash_2G_Status | test-and-diagnostic | scripts/task_health_monitor.sh | 3420 | t2CountNotify | +| WIFI_ERROR_DMCLI_crash_5G_Status | test-and-diagnostic | scripts/task_health_monitor.sh | 3293 | t2CountNotify | +| WIFI_ERROR_MESH_FAILED | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 2380 | t2_event_d | +| WIFI_ERROR_meshwifiservice_failure | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 4852 | t2_event_d | +| WIFI_ERROR_NvramCorrupt ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 150 | t2CountNotify | +| WIFI_ERROR_NvramCorrupt ⚠️ | OneWifi | scripts/radiohealth.sh | 114 | t2CountNotify | +| WIFI_ERROR_PSM_GetRecordFail | telemetry | source/testApp/testCommonLibApi.c | 69 | t2_event_s | +| WIFI_ERROR_QTN_driver_not_loaded | utopia | source/scripts/init/service.d/vlan_util_xb6.sh | 137 | t2CountNotify | +| WIFI_ERROR_Wifi_query_timeout | test-and-diagnostic | scripts/task_health_monitor.sh | 629 | t2CountNotify | +| WIFI_ERROR_WifiDmCliError | test-and-diagnostic | scripts/task_health_monitor.sh | 3015 | t2CountNotify | +| WIFI_ERROR_WifiDmCliError | test-and-diagnostic | scripts/task_health_monitor.sh | 3045 | t2CountNotify | +| WIFI_ERROR_WifiDmCliError | test-and-diagnostic | scripts/task_health_monitor.sh | 3084 | t2CountNotify | +| WIFI_ERROR_WL0_NotFound ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 102 | t2CountNotify | +| WIFI_ERROR_WL0_NotFound ⚠️ | OneWifi | scripts/radiohealth.sh | 66 | t2CountNotify | +| WIFI_ERROR_WL0_SSIDEmpty ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 115 | t2CountNotify | +| WIFI_ERROR_WL0_SSIDEmpty ⚠️ | OneWifi | scripts/radiohealth.sh | 79 | t2CountNotify | +| WIFI_ERROR_WL1_NotFound ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 106 | t2CountNotify | +| WIFI_ERROR_WL1_NotFound ⚠️ | OneWifi | scripts/radiohealth.sh | 70 | t2CountNotify | +| WIFI_ERROR_WL1_SSIDEmpty ⚠️ | meta-rdk-qcom | meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh | 123 | t2CountNotify | +| WIFI_ERROR_WL1_SSIDEmpty ⚠️ | OneWifi | scripts/radiohealth.sh | 87 | t2CountNotify | +| WIFI_INFO_2G_DISABLED | test-and-diagnostic | scripts/task_health_monitor.sh | 3309 | t2CountNotify | +| WIFI_INFO_2GPrivateSSID_OFF | test-and-diagnostic | scripts/task_health_monitor.sh | 3402 | t2CountNotify | +| WIFI_INFO_5G_DISABLED | test-and-diagnostic | scripts/task_health_monitor.sh | 3009 | t2CountNotify | +| WIFI_INFO_5G_DISABLED | test-and-diagnostic | scripts/task_health_monitor.sh | 3039 | t2CountNotify | +| WIFI_INFO_5G_DISABLED | test-and-diagnostic | scripts/task_health_monitor.sh | 3078 | t2CountNotify | +| WIFI_INFO_5GPrivateSSID_OFF | test-and-diagnostic | scripts/task_health_monitor.sh | 3275 | t2CountNotify | +| WIFI_INFO_6G_DISABLED | test-and-diagnostic | scripts/task_health_monitor.sh | 3179 | t2CountNotify | +| WIFI_INFO_BSEnabled | OneWifi | scripts/bandsteering.sh | 44 | t2CountNotify | +| WIFI_INFO_clientdisconnect | lan-manager-lite | source/lm/lm_main.c | 649 | t2_event_d | +| WIFI_INFO_ClientTransitionToXfininityWifi | hotspot | source/hotspotfd/dhcpsnooper.c | 735 | t2_event_d | +| WIFI_INFO_Hotspot_client_connected | hotspot | source/hotspotfd/cosa_hotspot_dml.c | 145 | t2_event_d | +| WIFI_INFO_Hotspot_client_disconnected | hotspot | source/hotspotfd/cosa_hotspot_dml.c | 151 | t2_event_d | +| WIFI_INFO_mesh_enabled ⚠️ | OneWifi | scripts/mesh_status.sh | 30 | t2CountNotify | +| WIFI_INFO_mesh_enabled ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 2908 | t2CountNotify | +| WIFI_INFO_mesh_enabled ⚠️ | test-and-diagnostic | scripts/task_health_monitor.sh | 4494 | t2CountNotify | +| WIFI_INFO_MeshDisabled_syscfg0 | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 2208 | t2_event_d | +| WIFI_INFO_MeshInit | mesh-agent | source/MeshAgentSsp/cosa_mesh_apis.c | 7308 | t2_event_d | +| WIFI_INFO_skipSSID | test-and-diagnostic | scripts/getSsidNames.sh | 127 | t2CountNotify | +| WIFI_INFO_XHCAM_offline | lan-manager-lite | source/lm/lm_main.c | 3656 | t2_event_d | +| WIFI_INFO_XHCAM_online | lan-manager-lite | source/lm/lm_main.c | 3634 | t2_event_d | +| WIFI_INFO_XHclient_offline | lan-manager-lite | source/lm/lm_main.c | 3664 | t2_event_d | +| WIFI_INFO_XHclient_online | lan-manager-lite | source/lm/lm_main.c | 3642 | t2_event_d | +| WIFI_INFO_XHTS_offline | lan-manager-lite | source/lm/lm_main.c | 3660 | t2_event_d | +| WIFI_INFO_XHTS_online | lan-manager-lite | source/lm/lm_main.c | 3638 | t2_event_d | +| WIFI_SH_5G_wifi_reset | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh | 359 | t2CountNotify | +| WIFI_SH_5G_wifi_reset | provisioning-and-management | arch/intel_usg/boards/arm_shared/scripts/systemd/sysd_process_monitor.sh | 181 | t2CountNotify | +| WIFI_SH_CcspWifiHung_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1476 | t2CountNotify | +| WIFI_SH_CcspWifiHung_restart | test-and-diagnostic | scripts/selfheal_aggressive.sh | 1481 | t2CountNotify | +| WIFI_SH_CcspWifiHung_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1450 | t2CountNotify | +| WIFI_SH_CcspWifiHung_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1454 | t2CountNotify | +| WIFI_SH_CcspWifiHung_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 1617 | t2CountNotify | +| WIFI_SH_hotspot_restart | test-and-diagnostic | scripts/corrective_action.sh | 788 | t2CountNotify | +| WIFI_SH_Parodus_restart | test-and-diagnostic | scripts/task_health_monitor.sh | 2213 | t2CountNotify | +| WIFI_SH_WIFIAGENT_Restart | OneWifi | scripts/process_monitor_atom.sh | 263 | t2CountNotify | +| WIFI_VAPPERC_split | OneWifi | scripts/apshealth.sh | 105 | t2ValNotify | +| WIFIV_ERR_reassoc | sysint | lib/rdk/networkConnectionRecovery.sh | 183 | t2CountNotify | +| WIFIV_WARN_PL_ | sysint | lib/rdk/networkConnectionRecovery.sh | 271 | t2CountNotify | +| WIFIV_WARN_PL_10PERC | sysint | lib/rdk/networkConnectionRecovery.sh | 280 | t2CountNotify | +| WPE_ERR_rtrmfplayer_crash | sysint | lib/rdk/core_shell.sh | 118 | t2CountNotify | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 74 | t2_event_s | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 114 | t2_event_s | +| xconf_couldnt_resolve | rdkfwupdater | src/rdkv_upgrade.c | 591 | Upgradet2CountNotify→t2_event_d | +| xconf_download_success | xconf-client | scripts/cbr_firmwareDwnld.sh | 1465 | t2ValNotify | +| xconf_download_success | xconf-client | scripts/xb6_firmwareDwnld.sh | 1621 | t2ValNotify | +| xconf_download_success | xconf-client | scripts/xb3_firmwareDwnld.sh | 1247 | t2ValNotify | +| xconf_download_success | xconf-client | scripts/xf3_firmwareDwnld.sh | 1520 | t2ValNotify | +| xconf_download_success | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 1472 | t2ValNotify | +| XCONF_Dwld_failed | xconf-client | scripts/cbr_firmwareDwnld.sh | 1484 | t2CountNotify | +| XCONF_Dwld_failed | xconf-client | scripts/xb6_firmwareDwnld.sh | 1638 | t2CountNotify | +| XCONF_Dwld_failed | xconf-client | scripts/xb3_firmwareDwnld.sh | 1258 | t2CountNotify | +| XCONF_Dwld_failed | xconf-client | scripts/xf3_firmwareDwnld.sh | 1531 | t2CountNotify | +| XCONF_Dwld_failed | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 1483 | t2CountNotify | +| XCONF_Dwld_Ignored_Not_EnoughMem | miscellaneous-broadband | source/FwDownloadChk/fw_download_check.c | 214 | t2_event_d | +| XCONF_Dwld_success | xconf-client | scripts/cbr_firmwareDwnld.sh | 1462 | t2CountNotify | +| XCONF_Dwld_success | xconf-client | scripts/xb6_firmwareDwnld.sh | 1618 | t2CountNotify | +| XCONF_Dwld_success | xconf-client | scripts/xb3_firmwareDwnld.sh | 1244 | t2CountNotify | +| XCONF_Dwld_success | xconf-client | scripts/xf3_firmwareDwnld.sh | 1517 | t2CountNotify | +| XCONF_Dwld_success | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 1469 | t2CountNotify | +| XCONF_Dwnld_error | xconf-client | source/cm_http_dl.c | 483 | t2_event_d | +| XCONF_flash_failed | xconf-client | scripts/xf3_firmwareDwnld.sh | 1581 | t2CountNotify | +| xconf_reaching_ssr | xconf-client | scripts/cbr_firmwareDwnld.sh | 513 | t2ValNotify | +| xconf_reaching_ssr | xconf-client | scripts/xb6_firmwareDwnld.sh | 572 | t2ValNotify | +| xconf_reaching_ssr | xconf-client | scripts/xb3_firmwareDwnld.sh | 390 | t2ValNotify | +| xconf_reaching_ssr | xconf-client | scripts/xf3_firmwareDwnld.sh | 418 | t2ValNotify | +| xconf_reaching_ssr | xconf-client | scripts/xb3_codebig_firmwareDwnld.sh | 510 | t2ValNotify | +| Xi_wifiMAC_split | sysint | lib/rdk/NM_Dispatcher.sh | 120 | t2ValNotify | +| xr_fwdnld_split | rdkfwupdater | src/rdkFwupdateMgr.c | 576 | t2ValNotify→t2_event_s | +| xr_fwdnld_split | rdkfwupdater | src/rdkv_main.c | 526 | t2ValNotify→t2_event_s | +| XWIFI_Active_Tunnel | hotspot | source/hotspotfd/hotspotfd.c | 2137 | t2_event_s | +| XWIFI_Active_Tunnel | hotspot | source/hotspotfd/hotspotfd.c | 2208 | t2_event_s | +| XWIFI_Active_Tunnel | hotspot | source/hotspotfd/hotspotfd.c | 2289 | t2_event_s | +| XWIFI_Active_Tunnel | hotspot | source/hotspotfd/hotspotfd.c | 2395 | t2_event_s | +| XWIFI_VLANID_10_split | hotspot | source/HotspotApi/HotspotApi.c | 771 | t2_event_d | +| XWIFI_VLANID_19_split | hotspot | source/HotspotApi/HotspotApi.c | 774 | t2_event_d | +| XWIFI_VLANID_21_split | hotspot | source/HotspotApi/HotspotApi.c | 777 | t2_event_d | +| XWIFI_VLANID_6_split | hotspot | source/HotspotApi/HotspotApi.c | 768 | t2_event_d | +| ZeroUptime | test-and-diagnostic | scripts/uptime.sh | 74 | t2CountNotify | + +## Dynamic Markers +Markers containing shell variables (`$var`, `${var}`) that resolve at runtime. + +| Marker Pattern | Component | File Path | Line | API | +|----------------|-----------|-----------|------|-----| +| SYST_ERR_$source | sysint | lib/rdk/rebootNow.sh | 143 | t2CountNotify | +| SYST_ERR_$source_reboot | sysint | lib/rdk/rebootNow.sh | 164 | t2CountNotify | +| SYST_ERR_CrashSig$2 | sysint | lib/rdk/core_shell.sh | 153 | t2CountNotify | +| WIFIV_INFO_NO${version}ROUTE | sysint | lib/rdk/networkConnectionRecovery.sh | 258 | t2CountNotify | + +## Duplicate Markers +⚠️ **btime_wcpenter_split** - Found in 3 components: +- provisioning-and-management: arch/intel_usg/boards/arm_shared/scripts/network_response.sh:680 (`t2ValNotify`) +- sysint-broadband: webgui_arm.sh:325 (`t2ValNotify`) +- webui: source/Styles/xb3/config/webgui.sh:313 (`t2ValNotify`) + +⚠️ **CDLrdkportal_split** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:377 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:178 (`t2ValNotify`) + +⚠️ **certerr_split** - Found in 7 components: +- crashupload: c_sourcecode/src/upload/upload.c:267 (`t2ValNotify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:458 (`t2_val_notify→t2_event_s`) +- rdkfwupdater: src/rdkv_upgrade.c:284 (`Upgradet2ValNotify→t2_event_s`) +- rdm-agent: scripts/downloadUtils.sh:417 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:307 (`t2ValNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:408 (`t2ValNotify`) +- sysint-broadband: stateRedRecoveryUtils.sh:78 (`t2ValNotify`) +- sysint-broadband: stateRedRecoveryUtils.sh:107 (`t2ValNotify`) +- xconf-client: scripts/cbr_firmwareDwnld.sh:764 (`t2ValNotify`) +- xconf-client: scripts/cbr_firmwareDwnld.sh:805 (`t2ValNotify`) +- xconf-client: scripts/cbr_firmwareDwnld.sh:1472 (`t2ValNotify`) +- xconf-client: scripts/cbr_firmwareDwnld.sh:1488 (`t2ValNotify`) +- xconf-client: scripts/xb6_firmwareDwnld.sh:865 (`t2ValNotify`) +- xconf-client: scripts/xb6_firmwareDwnld.sh:908 (`t2ValNotify`) +- xconf-client: scripts/xb6_firmwareDwnld.sh:1628 (`t2ValNotify`) +- xconf-client: scripts/xb6_firmwareDwnld.sh:1642 (`t2ValNotify`) + +⚠️ **CurlRet_split** - Found in 2 components: +- rdkfwupdater: src/rdkv_main.c:1166 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:418 (`t2ValNotify`) + +⚠️ **HDMI_DeviceInfo_split** - Found in 2 components: +- entservices-hdmicecsink: plugin/HdmiCecSinkImplementation.cpp:295 (`t2_event_s`) +- entservices-hdmicecsource: plugin/HdmiCecSourceImplementation.cpp:215 (`t2_event_s`) + +⚠️ **LOAD_AVG_ATOM_split** - Found in 2 components: +- sysint-broadband: log_mem_cpu_info_atom.sh:104 (`t2ValNotify`) +- test-and-diagnostic: scripts/log_mem_cpu_info.sh:163 (`t2ValNotify`) + +⚠️ **LUCurlErr_split** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:214 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:342 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:431 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:518 (`t2_val_notify→t2_event_s`) +- sysint: lib/rdk/uploadSTBLogs.sh:338 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:614 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:645 (`t2ValNotify`) + +⚠️ **PDRI_Version_split** - Found in 2 components: +- rdkfwupdater: src/deviceutils/device_api.c:163 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:458 (`t2ValNotify`) + +⚠️ **SYS_ERROR_DHCPV4Client_notrunning** - Found in 2 components: +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1118 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1125 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1139 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1145 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:4375 (`t2CountNotify`) +- wan-manager: source/WanManager/wanmgr_interface_sm.c:514 (`t2_event_d`) + +⚠️ **SYS_ERROR_DHCPV6Client_notrunning** - Found in 2 components: +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1158 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1167 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:1173 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:4384 (`t2CountNotify`) +- wan-manager: source/WanManager/wanmgr_interface_sm.c:536 (`t2_event_d`) + +⚠️ **SYS_ERROR_LOGUPLOAD_FAILED** - Found in 2 components: +- meta-cmf-bananapi: meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh:628 (`t2CountNotify`) +- meta-cmf-bananapi: meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh:665 (`t2CountNotify`) +- sysint-broadband: opsLogUpload.sh:348 (`t2CountNotify`) +- sysint-broadband: opsLogUpload.sh:482 (`t2CountNotify`) +- sysint-broadband: onboardLogUpload.sh:273 (`t2CountNotify`) +- sysint-broadband: onboardLogUpload.sh:315 (`t2CountNotify`) +- sysint-broadband: uploadRDKBLogs.sh:588 (`t2CountNotify`) +- sysint-broadband: uploadRDKBLogs.sh:829 (`t2CountNotify`) + +⚠️ **SYS_ERROR_NoConnectivity_reboot** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/device/lib/rdk/logfiles.sh:386 (`t2CountNotify`) +- sysint-broadband: logfiles.sh:500 (`t2CountNotify`) + +⚠️ **SYS_ERROR_PSMCrash_reboot** - Found in 2 components: +- provisioning-and-management: arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh:388 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_bootup.sh:513 (`t2CountNotify`) +- test-and-diagnostic: scripts/device/tccbr/selfheal_bootup.sh:402 (`t2CountNotify`) + +⚠️ **SYS_INFO_bootup** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh:876 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor_cron.sh:907 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor.sh:833 (`t2CountNotify`) + +⚠️ **SYS_INFO_CaptivePortal** - Found in 2 components: +- dhcp-manager: source/DHCPServerUtils/DHCPv4Server/dhcp_server_functions.c:1401 (`t2_event_d`) +- dhcp-manager: source/DHCPServerUtils/DHCPv4Server/dhcp_server_functions.c:1421 (`t2_event_d`) +- utopia: source/service_dhcp/dhcp_server_functions.c:1425 (`t2_event_d`) +- utopia: source/service_dhcp/dhcp_server_functions.c:1445 (`t2_event_d`) +- utopia: source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh:994 (`t2CountNotify`) + +⚠️ **SYS_INFO_CodBPASS** - Found in 2 components: +- rdkfwupdater: src/rdkv_upgrade.c:825 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:538 (`t2CountNotify`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:620 (`t2CountNotify`) + +⚠️ **SYS_INFO_ERouter_Mode_2** - Found in 2 components: +- cable-modem-agent: source/CMAgentSsp/gw_prov_sm.c:1081 (`t2_event_d`) +- gw-provisioning-application: source/gw_prov_sm.c:1017 (`t2_event_d`) + +⚠️ **SYS_INFO_ErouterMode2** - Found in 2 components: +- cable-modem-agent: source/CMAgentSsp/gw_prov_sm.c:1719 (`t2_event_d`) +- gw-provisioning-application: source/gw_prov_sm.c:1629 (`t2_event_d`) +- gw-provisioning-application: source/gw_prov_sm_generic.c:802 (`t2_event_d`) + +⚠️ **SYS_INFO_Invoke_batterymode** - Found in 2 components: +- telemetry: source/testApp/testCommonLibApi.c:75 (`t2_event_s`) +- test-and-diagnostic: scripts/resource_monitor.sh:421 (`t2CountNotify`) + +⚠️ **SYS_INFO_LOGS_UPLOADED** - Found in 2 components: +- meta-cmf-bananapi: meta-rdk-mtk-bpir4/recipes-rdkb/sysint-broadband/files/uploadRDKBLogs.sh:623 (`t2CountNotify`) +- sysint-broadband: opsLogUpload.sh:396 (`t2CountNotify`) +- sysint-broadband: opsLogUpload.sh:471 (`t2CountNotify`) +- sysint-broadband: onboardLogUpload.sh:311 (`t2CountNotify`) +- sysint-broadband: uploadRDKBLogs.sh:673 (`t2CountNotify`) +- sysint-broadband: uploadRDKBLogs.sh:807 (`t2CountNotify`) + +⚠️ **SYS_INFO_SETSYSTIME_split** - Found in 2 components: +- test-and-diagnostic: source/TandDSsp/current_time.c:181 (`t2_event_s`) +- utopia: source/scripts/init/service.d/service_systemtimeset.sh:44 (`t2ValNotify`) + +⚠️ **SYS_INFO_SW_upgrade_reboot** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh:879 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor_cron.sh:910 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor.sh:836 (`t2CountNotify`) + +⚠️ **SYS_INFO_WaitingFor_Stack_Init** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh:336 (`t2CountNotify`) +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh:546 (`t2CountNotify`) +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/sysint/rdkbLogMonitor.sh:665 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor_cron.sh:318 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor_cron.sh:490 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor.sh:249 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor.sh:463 (`t2CountNotify`) +- sysint-broadband: rdkbLogMonitor.sh:584 (`t2CountNotify`) + +⚠️ **SYS_SH_CMReset_PingFailed** - Found in 2 components: +- telemetry: source/testApp/testCommonLibApi.c:71 (`t2_event_s`) +- test-and-diagnostic: scripts/corrective_action.sh:428 (`t2CountNotify`) + +⚠️ **SYS_SH_dnsmasq_restart** - Found in 2 components: +- test-and-diagnostic: scripts/selfheal_bootup.sh:735 (`t2CountNotify`) +- test-and-diagnostic: scripts/selfheal_aggressive.sh:253 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:3663 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:3744 (`t2CountNotify`) +- test-and-diagnostic: scripts/device/tccbr/selfheal_bootup.sh:520 (`t2CountNotify`) +- utopia: source/pmon/pmon.c:183 (`t2_event_d`) + +⚠️ **SYS_SH_lighttpdCrash** - Found in 2 components: +- telemetry: source/testApp/testCommonLibApi.c:77 (`t2_event_d`) +- test-and-diagnostic: scripts/task_health_monitor.sh:2194 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:2395 (`t2CountNotify`) + +⚠️ **SYS_SH_LM_restart** - Found in 2 components: +- provisioning-and-management: arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh:213 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:1250 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:1673 (`t2CountNotify`) + +⚠️ **SYS_SH_WebPA_restart** - Found in 2 components: +- OneWifi: scripts/process_monitor_atom.sh:870 (`t2CountNotify`) +- provisioning-and-management: arch/intel_usg/boards/arm_shared/scripts/process_monitor.sh:294 (`t2CountNotify`) +- provisioning-and-management: arch/intel_usg/boards/arm_shared/scripts/systemd/sysd_process_monitor.sh:112 (`t2CountNotify`) + +⚠️ **SYST_ERR_CDLFail** - Found in 2 components: +- rdkfwupdater: src/rdkv_upgrade.c:594 (`Upgradet2CountNotify→t2_event_d`) +- rdkfwupdater: src/rdkv_upgrade.c:646 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:661 (`t2CountNotify`) + +⚠️ **SYST_ERR_Curl28** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:216 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:344 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:433 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:520 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:370 (`t2CountNotify`) + +⚠️ **SYST_ERR_LogUpload_Failed** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:166 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:552 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:657 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:780 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:871 (`t2CountNotify`) + +⚠️ **SYST_ERR_ProcessCrash** - Found in 2 components: +- crashupload: c_sourcecode/src/scanner/scanner.c:369 (`t2CountNotify→t2_event_d`) +- crashupload: runDumpUpload.sh:761 (`t2CountNotify`) +- crashupload: uploadDumps_TestCases.md:1590 (`t2CountNotify`) +- sysint: lib/rdk/core_shell.sh:81 (`t2CountNotify`) + +⚠️ **SYST_INFO_cb_xconf** - Found in 2 components: +- rdkfwupdater: src/rdkv_upgrade.c:733 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:591 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:667 (`t2CountNotify`) + +⚠️ **SYST_INFO_CDLSuccess** - Found in 2 components: +- rdkfwupdater: src/flash.c:137 (`flashT2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:664 (`t2CountNotify`) + +⚠️ **SYST_INFO_FWCOMPLETE** - Found in 2 components: +- rdkfwupdater: src/rdkv_upgrade.c:605 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:423 (`t2CountNotify`) + +⚠️ **SYST_INFO_FWUpgrade_Exit** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:80 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/swupdate_utility.sh:130 (`t2CountNotify`) + +⚠️ **SYST_INFO_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:135 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:517 (`t2CountNotify`) + +⚠️ **SYST_INFO_LUattempt** - Found in 2 components: +- dcm-agent: uploadstblogs/src/retry_logic.c:55 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:511 (`t2CountNotify`) + +⚠️ **SYST_INFO_mtls_xpki** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:100 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:355 (`t2CountNotify`) + +⚠️ **SYST_INFO_PDRILogUpload** - Found in 2 components: +- dcm-agent: uploadstblogs/src/strategies.c:953 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:883 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:886 (`t2CountNotify`) + +⚠️ **SYST_INFO_swdlSameImg** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:912 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:515 (`t2CountNotify`) + +⚠️ **SYST_INFO_SwdlSameImg_Stndby** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:905 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:519 (`t2CountNotify`) + +⚠️ **SYST_INFO_XCONFConnect** - Found in 2 components: +- rdkfwupdater: src/rdkv_upgrade.c:378 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:505 (`t2CountNotify`) + +⚠️ **SYST_WARN_UPGD_SKIP** - Found in 2 components: +- rdkfwupdater: src/deviceutils/device_api.c:921 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:158 (`t2ValNotify`) + +⚠️ **TEST_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:532 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:619 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:648 (`t2CountNotify`) + +⚠️ **Total_devices_connected_split** - Found in 2 components: +- lan-manager-lite: source/lm/lm_main.c:2786 (`t2_event_d`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:19 (`t2ValNotify`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:32 (`t2ValNotify`) + +⚠️ **Total_offline_clients_split** - Found in 2 components: +- lan-manager-lite: source/lm/lm_main.c:2788 (`t2_event_d`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:18 (`t2ValNotify`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:31 (`t2ValNotify`) + +⚠️ **Total_wifi_clients_split** - Found in 2 components: +- lan-manager-lite: source/lm/lm_main.c:2789 (`t2_event_d`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:20 (`t2ValNotify`) +- meta-rdk-qcom (patch): meta-cmf-ipq/recipes-ccsp/util/001-task_health.patch:33 (`t2ValNotify`) + +⚠️ **USED_CPU_ATOM_split** - Found in 2 components: +- sysint-broadband: log_mem_cpu_info_atom.sh:129 (`t2ValNotify`) +- test-and-diagnostic: scripts/log_mem_cpu_info.sh:224 (`t2ValNotify`) + +⚠️ **USED_MEM_ATOM_split** - Found in 2 components: +- sysint-broadband: log_mem_cpu_info_atom.sh:98 (`t2ValNotify`) +- test-and-diagnostic: scripts/log_mem_cpu_info.sh:107 (`t2ValNotify`) + +⚠️ **WIFI_ERROR_NvramCorrupt** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh:150 (`t2CountNotify`) +- OneWifi: scripts/radiohealth.sh:114 (`t2CountNotify`) + +⚠️ **WIFI_ERROR_WL0_NotFound** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh:102 (`t2CountNotify`) +- OneWifi: scripts/radiohealth.sh:66 (`t2CountNotify`) + +⚠️ **WIFI_ERROR_WL0_SSIDEmpty** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh:115 (`t2CountNotify`) +- OneWifi: scripts/radiohealth.sh:79 (`t2CountNotify`) + +⚠️ **WIFI_ERROR_WL1_NotFound** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh:106 (`t2CountNotify`) +- OneWifi: scripts/radiohealth.sh:70 (`t2CountNotify`) + +⚠️ **WIFI_ERROR_WL1_SSIDEmpty** - Found in 2 components: +- meta-rdk-qcom: meta-cmf-ipq/recipes-ccsp/ccsp/ccsp-wifi-agent/radiohealth.sh:123 (`t2CountNotify`) +- OneWifi: scripts/radiohealth.sh:87 (`t2CountNotify`) + +⚠️ **WIFI_INFO_mesh_enabled** - Found in 2 components: +- OneWifi: scripts/mesh_status.sh:30 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:2908 (`t2CountNotify`) +- test-and-diagnostic: scripts/task_health_monitor.sh:4494 (`t2CountNotify`) diff --git a/report10.md b/report10.md new file mode 100644 index 00000000..3fdea291 --- /dev/null +++ b/report10.md @@ -0,0 +1,1062 @@ +# Telemetry Marker Inventory +**Branch**: per-component (from versions-e.txt) +**Organizations**: rdkcentral, rdk-e, rdk-common, rdk-gdcs +**Generated**: 2026-04-02 19:30:42 UTC + +## Summary +- **Total Markers**: 491 +- **Static Markers**: 487 +- **Dynamic Markers**: 4 (contain shell variables) +- **Components Scanned**: 196 +- **Unresolved Components**: 3 ⚠️ +- **Duplicate Markers**: 43 ⚠️ + +## Unique Marker Inventory +| Marker Name | Components | +|-------------|------------| +| 5GclientMac_split | telemetry | +| ActStatus_split | rdkservices-cpc | +| APP_ERROR_Crashed_accum | crashupload | +| APP_ERROR_Crashed_split | crashupload | +| APP_ERROR_CrashInfo | crashupload | +| APP_ERROR_CrashInfo_status | crashupload | +| APPARMOR_C_split: | rdk-apparmor-profiles | +| APPARMOR_E_split: | rdk-apparmor-profiles | +| AS_ERR_Corrupted_Credential | authservice-cpc | +| AS_ERR_RSAInitFailed | authservice-cpc | +| AS_WARN_EmptyPartnerID | rdkservices-cpc | +| Board_temperature_split | sysint | +| btime_ipacqEth_split | sysint | +| btime_ipacqWifi_split | sysint | +| CA_Store_split | rdk-ca-store-cpc | +| CDL_INFO_inprogressExit | sysint, sysint-cpc | +| CDLrdkportal_split | rdkfwupdater, sysint, sysint-cpc | +| CDLsuspended_split | rdkfwupdater | +| cert_info_split | sslcerts-cpc | +| certerr_split | cpg-utils-cpc, crashupload, dcm-agent, rdkfwupdater, rdm, rdm-agent, sysint, sysint-cpc | +| cloudFWFile_split | rdkfwupdater | +| core_split | sysint | +| CoredumpFail_split | crashupload | +| coreUpld_split | crashupload | +| cpuinfo_split | sysint | +| crashedContainerAppname_split | crashupload | +| crashedContainerName_split | crashupload | +| crashedContainerProcessName_split | crashupload | +| crashedContainerStatus_split | crashupload | +| CrashedProc_split | sysint | +| Critical firmware upgrade in progress | lostandfound-cpc | +| CurlRet_split | rdkfwupdater, sysint, sysint-cpc | +| CurrentActivationStatus_split | rdkservices-cpc | +| DeviceCertUpdateFailure | ssa-cpc | +| emmcNoFile_split | sysint | +| emmcVer_split | sysint | +| FCR_split | rdkservices-cpc | +| Filesize_split | rdkfwupdater | +| FREE_MEM_split | sysint | +| FS_ssa_xpki_use_static_url | ssa-cpc | +| HDMI_DeviceInfo_split | entservices-hdmicecsink, entservices-hdmicecsource | +| HDMI_INFO_PORT1connected | entservices-hdmicecsink | +| HDMI_INFO_PORT2connected | entservices-hdmicecsink | +| HDMI_INFO_PORT3connected | entservices-hdmicecsink | +| HDMI_WARN_CEC_InvalidParamExcptn | hdmicec | +| HROT_NO_KEY | ssa-cpc | +| HROT_NON_PROD_KEY | ssa-cpc | +| HROT_SSA_DAMON_FAILED | ssa-cpc | +| HROT_ssa_xpki_use_static_url | ssa-cpc | +| lnfErr_split | lostandfound-cpc | +| LUCurlErr_split | dcm-agent, sysint | +| lxybundleversion_split | rdkfwupdater | +| marker | rdkfwupdater | +| MFR_ERR_MFRSV_coredetected | sysint | +| NF_ERR_rdm_filenotfound_extraction | rdm, rdm-agent | +| NF_INFO_codedumped | sysint | +| NF_INFO_rdm_package_failure | rdm-agent | +| NF_INFO_rdm_success | rdm, rdm-agent | +| PCR_split | rdkservices-cpc | +| PDRI_Version_split | rdkfwupdater, sysint, sysint-cpc | +| PKCS11_migration_NO_opcert | lxy-cpc | +| PKCS11_migration_removing_SEcert | lxy-cpc | +| PKCS11_migration_SEcert_removing | lxy-cpc | +| processCrash_split | crashupload | +| PRVMGR_ERR_File | lostandfound-cpc | +| PRVMGR_ERR_PollingTimeout | lostandfound-cpc | +| PRVMGR_ERR_XW3RegFail | lostandfound-cpc | +| PRVMGR_INFO_GotXBOId | lostandfound-cpc | +| PRVMGR_INFO_MobileDisconn | lostandfound-cpc | +| PRVMGR_INFO_MobilePaired | lostandfound-cpc | +| PRVMGR_INFO_Provisioned | lostandfound-cpc | +| PRVMGR_INFO_PRVSuccess | lostandfound-cpc | +| PRVMGR_INFO_StartBeacon | lostandfound-cpc | +| PRVMGR_INFO_WIFIAssfail | lostandfound-cpc | +| PRVMGR_INFO_WIFIAssOk | lostandfound-cpc | +| PRVMGR_INFO_XBOSuccess | lostandfound-cpc | +| PRVMGR_INFO_XW3RegOk | lostandfound-cpc | +| PRVMGR_split | lostandfound-cpc | +| RCU_FWver_split | sysint, sysint-cpc | +| RDM_ERR_package_failed | rdm-agent | +| RDM_ERR_package_notfound | rdm-agent | +| RDM_ERR_rdm_package_notfound | rdm | +| RDM_ERR_rdm_retry_fail | rdm, rdm-agent | +| RDM_ERR_rsa_signature_failed | rdm, rdm-agent | +| RDM_INFO_AppDownloadComplete | rdm-agent | +| RDM_INFO_AppDownloadSuccess | rdm-agent | +| RDM_INFO_DefaultURL | rdm-agent | +| RDM_INFO_DirectBlocked | rdm-agent | +| RDM_INFO_DownloadSSRURL | rdm-agent | +| RDM_INFO_extraction_complete | rdm-agent | +| RDM_INFO_package_download | rdm-agent | +| RDM_INFO_rsa_valid_signature | rdm, rdm-agent | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | +| RDMCAcert_split | rdk-ca-store-cpc | +| RDMwebuicert_split | sslcerts-cpc | +| RDMxPkicert_split | sslcerts-cpc | +| Router_Discovered | networkmanager | +| SCARD_INFO_emmc_noUpgd | sysint | +| SEFS_ssa_xpki_use_static_url | ssa-cpc | +| SEHAL_NO_KEY | ssa-cpc | +| SEHAL_NON_PROD_KEY | ssa-cpc | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | +| SESE_ssa_xpki_use_static_url | ssa-cpc | +| SHORTS_CONN_SUCCESS | sysint | +| SHORTS_DEVICE_TYPE_PROD | sysint | +| SHORTS_DEVICE_TYPE_TEST | sysint | +| SHORTS_DEVICE_TYPE_UNKNOWN | sysint | +| SHORTS_SSH_CLIENT_FAILURE | sysint | +| SHORTS_STUNNEL_CERT_FAILURE | sysint | +| SHORTS_STUNNEL_CLIENT_FAILURE | sysint | +| ssa_xpki_use_static_url | ssa-cpc | +| SYS_ERROR_S3CoreUpload_Failed | cpg-utils-cpc, crashupload | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | +| SYS_INFO_CANARY_Update | rdkfwupdater | +| SYS_INFO_CodBPASS | rdkfwupdater, sysint, sysint-cpc | +| SYS_INFO_CrashedContainer | crashupload | +| SYS_INFO_DAC_Inject_Failed | ssa-cpc | +| SYS_INFO_DAC_Inject_Success | ssa-cpc | +| SYS_INFO_DEFER_CANARY_REBOOT | rdkfwupdater | +| SYS_INFO_DirectSuccess | rdkfwupdater | +| SYS_INFO_Invoke_batterymode | telemetry | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | +| SYS_INFO_MTLS_enable | rdkfwupdater | +| SYS_INFO_S3CoreUploaded | cpg-utils-cpc, crashupload | +| SYS_INFO_swdltriggered | rdkfwupdater | +| SYS_INFO_TGZDUMP | crashupload | +| SYS_INFO_xPKI_Static_Fallback | sslcerts-cpc, sysint-cpc | +| SYS_SH_CMReset_PingFailed | telemetry | +| SYS_SH_lighttpdCrash | telemetry | +| SYST_ERR_ | sysint | +| SYST_ERR_10Times_reboot | reboot-manager, sysint, sysint-cpc | +| SYST_ERR_AUTHSERVICE_Read | rdkservices-cpc | +| SYST_ERR_AuthTokenExpiry | rdkservices-cpc | +| SYST_ERR_CCNotRepsonding_reboot | sysint | +| SYST_ERR_cdl_ssr | rdkfwupdater | +| SYST_ERR_CDLFail | rdkfwupdater, sysint, sysint-cpc | +| SYST_ERR_CECBusEx | hdmicec | +| SYST_ERR_CLIENTCERT_Fail | sysint-cpc | +| SYST_ERR_CompFail | crashupload | +| SYST_ERR_COREGZIP | sysint | +| SYST_ERR_Curl28 | dcm-agent, sysint | +| SYST_ERR_Cyclic_reboot | sysint | +| SYST_ERR_DiffFWCTN_FLdnld | rdkfwupdater | +| SYST_ERR_DNSFileEmpty | sysint | +| SYST_ERR_DSMGR_reboot | sysint | +| SYST_ERR_FailureAuthToken | rdkservices-cpc | +| SYST_ERR_FKPSError | rdkservices-cpc | +| SYST_ERR_FW_RFC_disabled | sysint, sysint-cpc | +| SYST_ERR_FWCTNFetch | rdkfwupdater | +| SYST_ERR_FWdnldFail | sysint, sysint-cpc | +| SYST_ERR_IARMDEMON_reboot | sysint | +| SYST_ERR_imageflsfail | rdkfwupdater | +| SYST_ERR_LogUpload_Failed | dcm-agent, sysint | +| SYST_ERR_MaintNetworkFail | entservices-softwareupdate | +| SYST_ERR_MINIDPZEROSIZE | crashupload | +| SYST_ERR_OPTFULL | sysint | +| SYST_ERR_OverflowMon_crash | sysint | +| SYST_ERR_PC_Conn169 | sysint | +| SYST_ERR_PC_MAF | sysint | +| SYST_ERR_PC_RBI | sysint | +| SYST_ERR_PC_Systemd | sysint | +| SYST_ERR_PC_TTSEngine | sysint | +| SYST_ERR_PDRI_VFail | sysint, sysint-cpc | +| SYST_ERR_PDRIUpg_failure | rdkfwupdater | +| SYST_ERR_PrevCDL_InProg | sysint | +| SYST_ERR_Process_Crash_accum | crashupload | +| SYST_ERR_ProcessCrash | crashupload, sysint | +| SYST_ERR_ProvisioningFail | rdkservices-cpc | +| SYST_ERR_RDMMISSING | rdm-agent | +| SYST_ERR_RedrecoveryCert | sysint-cpc | +| SYST_ERR_RFC | entservices-softwareupdate | +| SYST_ERR_Rmfstreamer_crash | sysint | +| SYST_ERR_Rmfstreamer_reboot | sysint | +| SYST_ERR_RunPod_reboot | sysint | +| SYST_ERR_S3signing_failed | cpg-utils-cpc | +| SYST_ERR_syslogng_crash | sysint | +| SYST_ERR_VodApp_restart | sysint | +| SYST_ERR_XACS401 | authservice-cpc | +| SYST_ERR_XCALDevice_crash | sysint | +| SYST_ERR_Xconf28 | sysint, sysint-cpc | +| SYST_ERR_xraudio_crash | sysint | +| SYST_ERROR_WAI_InitERR | entservices-softwareupdate | +| SYST_INFO_Act_split | rdkservices-cpc | +| SYST_INFO_ActivReady | rdkservices-cpc | +| SYST_INFO_ACTN_SUCCESS | rdkservices-cpc | +| SYST_INFO_AuthTokenSucc | rdkservices-cpc | +| SYST_INFO_C_CDL | rdkfwupdater | +| SYST_INFO_cb_xconf | rdkfwupdater, sysint, sysint-cpc | +| SYST_INFO_CDLSuccess | rdkfwupdater, sysint, sysint-cpc | +| SYST_INFO_Core_accum | sysint | +| SYST_INFO_CoreFull_accum | sysint | +| SYST_INFO_CoreIMP_accum | sysint | +| SYST_INFO_CoreNotProcessed | sysint | +| SYST_INFO_CoreProcessed | sysint | +| SYST_INFO_CoreProcessed_accum | sysint | +| SYST_INFO_CoreUpldSkipped | crashupload | +| SYST_INFO_CrashedProc_accum | sysint | +| SYST_INFO_CURL6 | cpg-utils-cpc, crashupload | +| SYST_INFO_DevicenotActivated | rdkservices-cpc | +| SYST_INFO_ETHConn | sysint | +| SYST_INFO_FetchFWCTN | rdkfwupdater | +| SYST_INFO_FWCOMPLETE | rdkfwupdater, sysint, sysint-cpc | +| SYST_INFO_FWUpgrade_Exit | rdkfwupdater, sysint | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | +| SYST_INFO_Http302 | rdkfwupdater | +| SYST_INFO_ImgFlashOK | rdkfwupdater | +| SYST_INFO_JSPPShutdown | entservices-monitor | +| SYST_INFO_lu_success | dcm-agent, sysint | +| SYST_INFO_LUattempt | dcm-agent, sysint | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | +| SYST_INFO_MemAvailable_split | sysint | +| SYST_INFO_minidumpUpld | crashupload | +| SYST_INFO_mtls_xpki | dcm-agent, sysint | +| SYST_INFO_NewXactToken_success | authservice-cpc | +| SYST_INFO_NoConsentFlash | rdkfwupdater | +| SYST_INFO_PartnerId | sysint | +| SYST_INFO_PC_RF4CE | sysint | +| SYST_INFO_PDRILogUpload | dcm-agent, sysint | +| SYST_INFO_PDRIUpgSuccess | rdkfwupdater | +| SYST_INFO_ProvisioingSucc | rdkservices-cpc | +| SYST_INFO_PRXR_Ver_split | rdkfwupdater | +| SYST_INFO_Redrecovery | sysint-cpc | +| SYST_INFO_RedStateRecovery | rdkfwupdater | +| SYST_INFO_RedstateSet | rdkfwupdater | +| SYST_INFO_RTController_split | rdkservices-cpc | +| SYST_INFO_SAME_FWCTN | rdkfwupdater | +| SYST_INFO_SigDump_split | sysint | +| SYST_INFO_SOMT | entservices-softwareupdate | +| SYST_INFO_SwapCached_split | sysint | +| SYST_INFO_SwapFree_split | sysint | +| SYST_INFO_SwapTotal_split | sysint | +| SYST_INFO_swdlSameImg | rdkfwupdater, sysint, sysint-cpc | +| SYST_INFO_SwdlSameImg_Stndby | rdkfwupdater, sysint, sysint-cpc | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | +| SYST_INFO_SYSBUILD | systemtimemgr | +| SYST_INFO_Thrtl_Enable | rdkfwupdater | +| SYST_INFO_TLS_xconf | rdkfwupdater | +| SYST_INFO_TVActivated | rdkservices-cpc | +| SYST_INFO_v2_fetchCalled | rdkservices-cpc | +| SYST_INFO_v2FKPS_Good | rdkservices-cpc | +| SYST_INFO_v2FKPS_NoFetch | rdkservices-cpc | +| SYST_INFO_v2FKPS_provCalled | rdkservices-cpc | +| SYST_INFO_v2FKPSSuccess | rdkservices-cpc | +| SYST_INFO_WIFIConn | sysint | +| SYST_INFO_Xconf200 | sysint, sysint-cpc | +| SYST_INFO_XCONFConnect | rdkfwupdater, sysint, sysint-cpc | +| SYST_SWDL_Retry_split | sysint, sysint-cpc | +| SYST_WARN_ClkNotSet | rdkservices-cpc | +| SYST_WARN_CompFail | crashupload | +| SYST_WARN_CoreNP_accum | sysint | +| SYST_WARN_dcm_curl28 | sysint | +| SYST_WARN_GW100PERC_PACKETLOSS | sysint | +| SYST_WARN_NoMinidump | crashupload | +| SYST_WARN_UPGD_SKIP | rdkfwupdater, sysint, sysint-cpc | +| TEST_EVENT_1 | telemetry | +| TEST_EVENT_2 | telemetry | +| TEST_lu_success | dcm-agent, sysint | +| Test_SWReset | reboot-manager, sysint, sysint-cpc | +| TimeZone_split | sysint | +| TR69HOSTIF_GET_1000_WITHIN_5MIN | tr69hostif | +| TR69HOSTIF_GET_200_WITHIN_1MIN | tr69hostif | +| TR69HOSTIF_GET_TIMEOUT_PARAM | tr69hostif | +| TR69HOSTIF_SET_1000_WITHIN_5MIN | tr69hostif | +| TR69HOSTIF_SET_200_WITHIN_1MIN | tr69hostif | +| TR69HOSTIF_SET_TIMEOUT_PARAM | tr69hostif | +| vmstats_split | sysint | +| WIFI_ERROR_PSM_GetRecordFail | telemetry | +| WIFI_INFO_MvdToPrvSSID | lostandfound-cpc | +| WIFIV_ERR_Lnf463 | lostandfound-cpc | +| WIFIV_ERR_lnf_461 | lostandfound-cpc | +| WIFIV_ERR_lnf_464 | lostandfound-cpc | +| WIFIV_ERR_lnf_466 | lostandfound-cpc | +| WIFIV_ERR_LnF_cred_xPKI | lostandfound-cpc | +| WIFIV_ERR_LnF_lfat_XPKI | lostandfound-cpc | +| WIFIV_ERR_LnF_XPKI_EAP-TLS | lostandfound-cpc | +| WIFIV_ERR_reassoc | sysint | +| WIFIV_INFO_HAL_RX_Bitrate | wifimetrics-cpc | +| WIFIV_INFO_HAL_TX_Bitrate | wifimetrics-cpc | +| WIFIV_INFO_HAL_WiFiChannelUtilization_split | wifimetrics-cpc | +| WIFIV_INFO_LnF_cred_xPKI | lostandfound-cpc | +| WIFIV_INFO_LnF_lfat_XPKI | lostandfound-cpc | +| WIFIV_INFO_LnfConnected | lostandfound-cpc | +| WIFIV_SET_BGSCAN_PARAMETERS | wifioptimizer-cpc | +| WIFIV_WARN_LnF_xPKI | lostandfound-cpc | +| WIFIV_WARN_PL_ | sysint | +| WIFIV_WARN_PL_10PERC | sysint | +| WPE_ERR_rtrmfplayer_crash | sysint | +| WPE_INFO_MigStatus_split | entservices-migration | +| xconf_couldnt_resolve | rdkfwupdater | +| Xi_wifiMAC_split | sysint | +| xr_fwdnld_split | rdkfwupdater | + +## Detailed Marker Inventory +| Marker Name | Component | File Path | Line | API | +|-------------|-----------|-----------|------|-----| +| 5GclientMac_split | telemetry | source/testApp/testCommonLibApi.c | 73 | t2_event_s | +| ActStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1225 | t2_event_s | +| ActStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1265 | t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 617 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | runDumpUpload.sh | 826 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | c_sourcecode/src/scanner/scanner.c | 616 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_split | crashupload | runDumpUpload.sh | 825 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | uploadDumps_TestCases.md | 1618 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | c_sourcecode/src/scanner/scanner.c | 620 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo | crashupload | runDumpUpload.sh | 828 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | uploadDumps_TestCases.md | 1619 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | c_sourcecode/src/scanner/scanner.c | 622 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo_status | crashupload | runDumpUpload.sh | 830 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | uploadDumps_TestCases.md | 1620 | t2ValNotify | +| APPARMOR_C_split: | rdk-apparmor-profiles | apparmor_parse.sh | 119 | t2ValNotify | +| APPARMOR_E_split: | rdk-apparmor-profiles | apparmor_parse.sh | 126 | t2ValNotify | +| AS_ERR_Corrupted_Credential | authservice-cpc | authservice.cpp | 431 | t2_event_s | +| AS_ERR_RSAInitFailed | authservice-cpc | authservice.cpp | 292 | t2_event_s | +| AS_WARN_EmptyPartnerID | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 359 | t2_event_s | +| Board_temperature_split | sysint | lib/rdk/temperature-telemetry.sh | 27 | t2ValNotify | +| btime_ipacqEth_split | sysint | lib/rdk/ipv6addressChange.sh | 62 | t2ValNotify | +| btime_ipacqWifi_split | sysint | lib/rdk/ipv6addressChange.sh | 65 | t2ValNotify | +| CA_Store_split | rdk-ca-store-cpc | scripts/check-ca-update.sh | 78 | t2ValNotify | +| CDL_INFO_inprogressExit ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 755 | t2CountNotify | +| CDL_INFO_inprogressExit ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 806 | t2CountNotify | +| CDLrdkportal_split ⚠️ | rdkfwupdater | src/device_status_helper.c | 377 | t2CountNotify→t2_event_d | +| CDLrdkportal_split ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 178 | t2ValNotify | +| CDLrdkportal_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 179 | t2ValNotify | +| CDLsuspended_split | rdkfwupdater | src/rdkv_upgrade.c | 146 | Upgradet2CountNotify→t2_event_d | +| cert_info_split | sslcerts-cpc | Scripts/cert-monitoring.sh | 65 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 213 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 271 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 213 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 271 | t2ValNotify | +| certerr_split ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 267 | t2ValNotify→t2_event_s | +| certerr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 458 | t2_val_notify→t2_event_s | +| certerr_split ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 284 | Upgradet2ValNotify→t2_event_s | +| certerr_split ⚠️ | rdm | scripts/downloadUtils.sh | 452 | t2ValNotify | +| certerr_split ⚠️ | rdm-agent | scripts/downloadUtils.sh | 417 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 307 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 408 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 353 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 435 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 484 | t2ValNotify | +| cloudFWFile_split | rdkfwupdater | src/device_status_helper.c | 878 | t2ValNotify→t2_event_s | +| core_split | sysint | lib/rdk/core_shell.sh | 165 | t2ValNotify | +| CoredumpFail_split | crashupload | c_sourcecode/src/upload/upload.c | 286 | t2ValNotify→t2_event_s | +| coreUpld_split | crashupload | c_sourcecode/src/upload/upload.c | 228 | t2ValNotify→t2_event_s | +| cpuinfo_split | sysint | lib/rdk/system_info_collector.sh | 56 | t2ValNotify | +| cpuinfo_split | sysint | lib/rdk/cpu-statistics.sh | 30 | t2ValNotify | +| crashedContainerAppname_split | crashupload | c_sourcecode/src/scanner/scanner.c | 603 | t2ValNotify→t2_event_s | +| crashedContainerAppname_split | crashupload | runDumpUpload.sh | 817 | t2ValNotify | +| crashedContainerAppname_split | crashupload | uploadDumps_TestCases.md | 1615 | t2ValNotify | +| crashedContainerName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 601 | t2ValNotify→t2_event_s | +| crashedContainerName_split | crashupload | runDumpUpload.sh | 815 | t2ValNotify | +| crashedContainerName_split | crashupload | uploadDumps_TestCases.md | 1613 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 604 | t2ValNotify→t2_event_s | +| crashedContainerProcessName_split | crashupload | runDumpUpload.sh | 818 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | uploadDumps_TestCases.md | 1616 | t2ValNotify | +| crashedContainerStatus_split | crashupload | c_sourcecode/src/scanner/scanner.c | 602 | t2ValNotify→t2_event_s | +| crashedContainerStatus_split | crashupload | runDumpUpload.sh | 816 | t2ValNotify | +| crashedContainerStatus_split | crashupload | uploadDumps_TestCases.md | 1614 | t2ValNotify | +| CrashedProc_split | sysint | lib/rdk/core_shell.sh | 149 | t2ValNotify | +| Critical firmware upgrade in progress | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1261 | t2_event_d | +| CurlRet_split ⚠️ | rdkfwupdater | src/rdkv_main.c | 1166 | t2CountNotify→t2_event_d | +| CurlRet_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 418 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 348 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 442 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 491 | t2ValNotify | +| CurrentActivationStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1224 | t2_event_s | +| CurrentActivationStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1264 | t2_event_s | +| DeviceCertUpdateFailure | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunCertChecker.sh | 120 | t2CountNotify | +| DeviceCertUpdateFailure | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 70 | t2CountNotify | +| emmcNoFile_split | sysint | lib/rdk/eMMC_Upgrade.sh | 131 | t2ValNotify | +| emmcVer_split | sysint | lib/rdk/eMMC_Upgrade.sh | 66 | t2ValNotify | +| FCR_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1174 | t2_event_s | +| Filesize_split | rdkfwupdater | src/rdkv_upgrade.c | 623 | Upgradet2CountNotify→t2_event_d | +| FREE_MEM_split | sysint | lib/rdk/system_info_collector.sh | 59 | t2ValNotify | +| FREE_MEM_split | sysint | lib/rdk/cpu-statistics.sh | 33 | t2ValNotify | +| FS_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunFScertifier.sh | 240 | t2CountNotify | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 295 | t2_event_s | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsource | plugin/HdmiCecSourceImplementation.cpp | 215 | t2_event_s | +| HDMI_INFO_PORT1connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1965 | t2_event_d | +| HDMI_INFO_PORT2connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1968 | t2_event_d | +| HDMI_INFO_PORT3connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1971 | t2_event_d | +| HDMI_WARN_CEC_InvalidParamExcptn | hdmicec | ccec/src/Bus.cpp | 346 | t2_event_s | +| HROT_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/genericdaemon/Scripts/check_pph.sh | 18 | t2CountNotify | +| HROT_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 325 | t2CountNotify | +| HROT_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 328 | t2CountNotify | +| HROT_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/genericdaemon/Scripts/check_pph.sh | 23 | t2CountNotify | +| HROT_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 333 | t2CountNotify | +| HROT_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 239 | t2CountNotify | +| lnfErr_split | lostandfound-cpc | src/lost_and_found.c | 860 | laf_telemetry_event_d→t2_event_d | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 214 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 342 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 431 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 518 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 338 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 614 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 645 | t2ValNotify | +| lxybundleversion_split | rdkfwupdater | src/json_process.c | 284 | t2ValNotify→t2_event_s | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 246 | t2_event_s | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 247 | t2ValNotify→t2_event_s | +| MFR_ERR_MFRSV_coredetected | sysint | lib/rdk/core_shell.sh | 85 | t2CountNotify | +| NF_ERR_rdm_filenotfound_extraction ⚠️ | rdm | scripts/downloadUtils.sh | 653 | t2CountNotify | +| NF_ERR_rdm_filenotfound_extraction ⚠️ | rdm-agent | scripts/downloadUtils.sh | 622 | t2CountNotify | +| NF_INFO_codedumped | sysint | lib/rdk/core_shell.sh | 121 | t2CountNotify | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_downloadmgr.c | 279 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_packagemgr.c | 193 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_success ⚠️ | rdm | scripts/packagerMgr.sh | 333 | t2CountNotify | +| NF_INFO_rdm_success ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 319 | t2ValNotify→t2_event_s | +| NF_INFO_rdm_success ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 335 | t2ValNotify→t2_event_s | +| PCR_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1188 | t2_event_s | +| PDRI_Version_split ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 163 | t2ValNotify→t2_event_s | +| PDRI_Version_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 458 | t2ValNotify | +| PDRI_Version_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 525 | t2ValNotify | +| PKCS11_migration_NO_opcert | lxy-cpc | scripts/lxyinit.sh | 251 | t2CountNotify | +| PKCS11_migration_NO_opcert | lxy-cpc | scripts/lxyinit.sh | 251 | t2CountNotify | +| PKCS11_migration_removing_SEcert | lxy-cpc | scripts/lxyinit.sh | 90 | t2CountNotify | +| PKCS11_migration_removing_SEcert | lxy-cpc | scripts/lxyinit.sh | 90 | t2CountNotify | +| PKCS11_migration_SEcert_removing | lxy-cpc | scripts/lxyinit.sh | 99 | t2CountNotify | +| PKCS11_migration_SEcert_removing | lxy-cpc | scripts/lxyinit.sh | 99 | t2CountNotify | +| processCrash_split | crashupload | c_sourcecode/src/scanner/scanner.c | 367 | t2ValNotify→t2_event_s | +| processCrash_split | crashupload | runDumpUpload.sh | 759 | t2ValNotify | +| processCrash_split | crashupload | uploadDumps_TestCases.md | 1588 | t2ValNotify | +| PRVMGR_ERR_File | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1398 | t2_event_d | +| PRVMGR_ERR_PollingTimeout | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 655 | t2_event_d | +| PRVMGR_ERR_XW3RegFail | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1023 | t2_event_d | +| PRVMGR_INFO_GotXBOId | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 498 | t2_event_d | +| PRVMGR_INFO_MobileDisconn | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1304 | t2_event_d | +| PRVMGR_INFO_MobilePaired | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1015 | t2_event_d | +| PRVMGR_INFO_Provisioned | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1470 | t2_event_d | +| PRVMGR_INFO_PRVSuccess | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1232 | t2_event_d | +| PRVMGR_INFO_StartBeacon | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 988 | t2_event_d | +| PRVMGR_INFO_WIFIAssfail | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1186 | t2_event_d | +| PRVMGR_INFO_WIFIAssOk | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1180 | t2_event_d | +| PRVMGR_INFO_XBOSuccess | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1055 | t2_event_d | +| PRVMGR_INFO_XW3RegOk | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1027 | t2_event_d | +| PRVMGR_split | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 837 | t2_event_s | +| RCU_FWver_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 395 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 541 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 422 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 608 | t2ValNotify | +| RDM_ERR_package_failed | rdm-agent | src/rdm_downloadutils.c | 296 | t2CountNotify→t2_event_d | +| RDM_ERR_package_notfound | rdm-agent | src/rdm_downloadmgr.c | 159 | t2CountNotify→t2_event_d | +| RDM_ERR_rdm_package_notfound | rdm | scripts/downloadMgr.sh | 404 | t2CountNotify | +| RDM_ERR_rdm_retry_fail ⚠️ | rdm | scripts/downloadUtils.sh | 416 | t2CountNotify | +| RDM_ERR_rdm_retry_fail ⚠️ | rdm-agent | scripts/downloadUtils.sh | 378 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm | scripts/opensslVerifier.sh | 121 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm | scripts/downloadMgr.sh | 437 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 308 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 324 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_packagemgr.c | 232 | t2CountNotify→t2_event_d | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 333 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 370 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadSuccess | rdm-agent | rdm_main.c | 378 | t2CountNotify→t2_event_d | +| RDM_INFO_DefaultURL | rdm-agent | src/rdm_downloadutils.c | 102 | t2ValNotify→t2_event_s | +| RDM_INFO_DirectBlocked | rdm-agent | src/rdm_downloadutils.c | 339 | t2CountNotify→t2_event_d | +| RDM_INFO_DownloadSSRURL | rdm-agent | src/rdm_downloadutils.c | 95 | t2ValNotify→t2_event_s | +| RDM_INFO_extraction_complete | rdm-agent | src/rdm_downloadmgr.c | 299 | t2CountNotify→t2_event_d | +| RDM_INFO_package_download | rdm-agent | src/rdm_downloadutils.c | 288 | t2ValNotify→t2_event_s | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm | scripts/packagerMgr.sh | 263 | t2CountNotify | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_openssl.c | 981 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_downloadutils.c | 629 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_packagemgr.c | 63 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_openssl.c | 985 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_downloadutils.c | 632 | t2CountNotify→t2_event_d | +| RDMCAcert_split | rdk-ca-store-cpc | scripts/post_cadl.sh | 126 | t2ValNotify | +| RDMwebuicert_split | sslcerts-cpc | webuicerts/scripts/post_webuicerts.sh | 47 | t2ValNotify | +| RDMxPkicert_split | sslcerts-cpc | RDM-xpki-certs/scripts/post_xpkicertsdl.sh | 53 | t2ValNotify | +| Router_Discovered | networkmanager | tools/upnp/UpnpDiscoveryManager.cpp | 97 | t2_event_s | +| SCARD_INFO_emmc_noUpgd | sysint | lib/rdk/eMMC_Upgrade.sh | 135 | t2CountNotify | +| SEFS_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunSEFScertifier.sh | 243 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 14 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/ssaecckdf/Scripts/check_pph.sh | 15 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/a5000/Scripts/check_pph.sh | 15 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 83 | t2CountNotify | +| SEHAL_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 17 | t2CountNotify | +| SEHAL_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 86 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 21 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/ssaecckdf/Scripts/check_pph.sh | 19 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/a5000/Scripts/check_pph.sh | 19 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 90 | t2CountNotify | +| SESE_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunSESEcertifier.sh | 238 | t2CountNotify | +| SESE_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunSESEcertifier.sh | 258 | t2CountNotify | +| SHORTS_CONN_SUCCESS | sysint | lib/rdk/startStunnel.sh | 181 | t2CountNotify | +| SHORTS_DEVICE_TYPE_PROD | sysint | lib/rdk/startStunnel.sh | 120 | t2CountNotify | +| SHORTS_DEVICE_TYPE_TEST | sysint | lib/rdk/startStunnel.sh | 115 | t2CountNotify | +| SHORTS_DEVICE_TYPE_UNKNOWN | sysint | lib/rdk/startStunnel.sh | 126 | t2CountNotify | +| SHORTS_SSH_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 176 | t2CountNotify | +| SHORTS_STUNNEL_CERT_FAILURE | sysint | lib/rdk/startStunnel.sh | 101 | t2CountNotify | +| SHORTS_STUNNEL_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 162 | t2CountNotify | +| ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/xpkicertifier/scripts/rdkssaRunDeviceCertifier.sh | 282 | t2CountNotify | +| ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/xpki/scripts/rdkssacertcheck.sh | 244 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 281 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 281 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 275 | t2CountNotify→t2_event_d | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 162 | t2_event_s | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 625 | t2_event_s | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 745 | t2_event_s | +| SYS_INFO_CANARY_Update | rdkfwupdater | src/flash.c | 396 | flashT2CountNotify→t2_event_d | +| SYS_INFO_CodBPASS ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 825 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 538 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 620 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 589 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 671 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | c_sourcecode/src/scanner/scanner.c | 605 | t2CountNotify→t2_event_d | +| SYS_INFO_CrashedContainer | crashupload | runDumpUpload.sh | 819 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | uploadDumps_TestCases.md | 1617 | t2CountNotify | +| SYS_INFO_DAC_Inject_Failed | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 408 | t2ValNotify→t2_event_s | +| SYS_INFO_DAC_Inject_Success | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 413 | t2ValNotify→t2_event_s | +| SYS_INFO_DEFER_CANARY_REBOOT | rdkfwupdater | src/flash.c | 392 | flashT2CountNotify→t2_event_d | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1156 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1226 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_Invoke_batterymode | telemetry | source/testApp/testCommonLibApi.c | 75 | t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 195 | t2ValNotify→t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 206 | t2ValNotify→t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 210 | t2ValNotify→t2_event_s | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1028 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1050 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_S3CoreUploaded ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 289 | t2CountNotify | +| SYS_INFO_S3CoreUploaded ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 289 | t2CountNotify | +| SYS_INFO_S3CoreUploaded ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 297 | t2CountNotify→t2_event_d | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 434 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 439 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_TGZDUMP | crashupload | c_sourcecode/src/scanner/scanner.c | 489 | t2CountNotify→t2_event_d | +| SYS_INFO_TGZDUMP | crashupload | runDumpUpload.sh | 792 | t2CountNotify | +| SYS_INFO_TGZDUMP | crashupload | uploadDumps_TestCases.md | 1641 | t2CountNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/idm_certs.sh | 65 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/hrot_idm_certs.sh | 101 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/dpcg.sh | 36 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sysint-cpc | lib/rdk/exec_curl_mtls.sh | 73 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sysint-cpc | lib/rdk/mtlsUtils.sh | 78 | t2ValNotify | +| SYS_SH_CMReset_PingFailed | telemetry | source/testApp/testCommonLibApi.c | 71 | t2_event_s | +| SYS_SH_lighttpdCrash | telemetry | source/testApp/testCommonLibApi.c | 77 | t2_event_d | +| SYST_ERR_ | sysint | lib/rdk/core_shell.sh | 132 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | reboot-manager | src/reboot_reason_classify.c | 261 | t2CountNotify→t2_event_d | +| SYST_ERR_10Times_reboot ⚠️ | reboot-manager | src/reboot_reason_classify.c | 261 | t2CountNotify→t2_event_d | +| SYST_ERR_10Times_reboot ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 127 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 140 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 152 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 165 | t2CountNotify | +| SYST_ERR_AUTHSERVICE_Read | rdkservices-cpc | AuthService/helpers.cpp | 443 | t2_event_s | +| SYST_ERR_AuthTokenExpiry | rdkservices-cpc | AuthService/AuthServiceImplementation.cpp | 1750 | t2_event_s | +| SYST_ERR_CCNotRepsonding_reboot | sysint | lib/rdk/rebootNow.sh | 140 | t2CountNotify | +| SYST_ERR_cdl_ssr | rdkfwupdater | src/rdkv_upgrade.c | 153 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 594 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 646 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 661 | t2CountNotify | +| SYST_ERR_CDLFail ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 712 | t2CountNotify | +| SYST_ERR_CECBusEx | hdmicec | ccec/src/MessageDecoder.cpp | 194 | t2_event_s | +| SYST_ERR_CLIENTCERT_Fail | sysint-cpc | lib/rdk/exec_curl_mtls.sh | 104 | t2ValNotify | +| SYST_ERR_CompFail | crashupload | runDumpUpload.sh | 1021 | t2CountNotify | +| SYST_ERR_COREGZIP | sysint | lib/rdk/core_shell.sh | 177 | t2CountNotify | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 216 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 344 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 433 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 520 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 370 | t2CountNotify | +| SYST_ERR_Cyclic_reboot | sysint | lib/rdk/rebootNow.sh | 279 | t2CountNotify | +| SYST_ERR_DiffFWCTN_FLdnld | rdkfwupdater | src/chunk.c | 175 | t2CountNotify→t2_event_d | +| SYST_ERR_DNSFileEmpty | sysint | lib/rdk/networkConnectionRecovery.sh | 339 | t2CountNotify | +| SYST_ERR_DSMGR_reboot | sysint | lib/rdk/rebootNow.sh | 152 | t2CountNotify | +| SYST_ERR_FailureAuthToken | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1326 | t2_event_s | +| SYST_ERR_FKPSError | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 536 | t2_event_s | +| SYST_ERR_FW_RFC_disabled ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 694 | t2CountNotify | +| SYST_ERR_FW_RFC_disabled ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 745 | t2CountNotify | +| SYST_ERR_FWCTNFetch | rdkfwupdater | src/chunk.c | 114 | t2CountNotify→t2_event_d | +| SYST_ERR_FWdnldFail ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 401 | t2ValNotify | +| SYST_ERR_FWdnldFail ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 440 | t2ValNotify | +| SYST_ERR_IARMDEMON_reboot | sysint | lib/rdk/rebootNow.sh | 155 | t2CountNotify | +| SYST_ERR_imageflsfail | rdkfwupdater | src/flash.c | 141 | flashT2CountNotify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 166 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 552 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 657 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 780 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 871 | t2CountNotify | +| SYST_ERR_MaintNetworkFail | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 455 | t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | c_sourcecode/src/archive/archive.c | 306 | t2CountNotify→t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | runDumpUpload.sh | 979 | t2CountNotify | +| SYST_ERR_OPTFULL | sysint | lib/rdk/disk_threshold_check.sh | 354 | t2CountNotify | +| SYST_ERR_OverflowMon_crash | sysint | lib/rdk/core_shell.sh | 88 | t2CountNotify | +| SYST_ERR_PC_Conn169 | sysint | lib/rdk/core_shell.sh | 91 | t2CountNotify | +| SYST_ERR_PC_MAF | sysint | lib/rdk/core_shell.sh | 94 | t2CountNotify | +| SYST_ERR_PC_RBI | sysint | lib/rdk/core_shell.sh | 97 | t2CountNotify | +| SYST_ERR_PC_Systemd | sysint | lib/rdk/core_shell.sh | 100 | t2CountNotify | +| SYST_ERR_PC_TTSEngine | sysint | lib/rdk/core_shell.sh | 103 | t2CountNotify | +| SYST_ERR_PDRI_VFail ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 453 | t2CountNotify | +| SYST_ERR_PDRI_VFail ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 520 | t2CountNotify | +| SYST_ERR_PDRIUpg_failure | rdkfwupdater | src/rdkv_upgrade.c | 589 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_PrevCDL_InProg | sysint | lib/rdk/swupdate_utility.sh | 157 | t2CountNotify | +| SYST_ERR_Process_Crash_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 368 | t2ValNotify→t2_event_s | +| SYST_ERR_Process_Crash_accum | crashupload | runDumpUpload.sh | 760 | t2ValNotify | +| SYST_ERR_Process_Crash_accum | crashupload | uploadDumps_TestCases.md | 1589 | t2ValNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | c_sourcecode/src/scanner/scanner.c | 369 | t2CountNotify→t2_event_d | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | runDumpUpload.sh | 761 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | uploadDumps_TestCases.md | 1590 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | sysint | lib/rdk/core_shell.sh | 81 | t2CountNotify | +| SYST_ERR_ProvisioningFail | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 352 | t2_event_s | +| SYST_ERR_RDMMISSING | rdm-agent | src/rdm_downloadutils.c | 118 | t2ValNotify→t2_event_s | +| SYST_ERR_RedrecoveryCert | sysint-cpc | lib/rdk/xconfImageCheck.sh | 393 | t2CountNotify | +| SYST_ERR_RFC | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1652 | t2_event_d | +| SYST_ERR_Rmfstreamer_crash | sysint | lib/rdk/core_shell.sh | 128 | t2CountNotify | +| SYST_ERR_Rmfstreamer_reboot | sysint | lib/rdk/rebootNow.sh | 158 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 137 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 161 | t2CountNotify | +| SYST_ERR_S3signing_failed | cpg-utils-cpc | uploadDumpsToS3.sh | 223 | t2CountNotify | +| SYST_ERR_S3signing_failed | cpg-utils-cpc | uploadDumpsToS3.sh | 223 | t2CountNotify | +| SYST_ERR_syslogng_crash | sysint | lib/rdk/core_shell.sh | 109 | t2CountNotify | +| SYST_ERR_VodApp_restart | sysint | lib/rdk/core_shell.sh | 106 | t2CountNotify | +| SYST_ERR_XACS401 | authservice-cpc | authservice.cpp | 553 | t2_event_s | +| SYST_ERR_XCALDevice_crash | sysint | lib/rdk/core_shell.sh | 124 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 512 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 561 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 579 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 628 | t2CountNotify | +| SYST_ERR_xraudio_crash | sysint | lib/rdk/core_shell.sh | 112 | t2CountNotify | +| SYST_ERROR_WAI_InitERR | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 648 | t2_event_d | +| SYST_INFO_Act_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1223 | t2_event_s | +| SYST_INFO_Act_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1263 | t2_event_s | +| SYST_INFO_ActivReady | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1312 | t2_event_s | +| SYST_INFO_ACTN_SUCCESS | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1228 | t2_event_s | +| SYST_INFO_ACTN_SUCCESS | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1268 | t2_event_s | +| SYST_INFO_AuthTokenSucc | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 106 | t2_event_s | +| SYST_INFO_AuthTokenSucc | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1290 | t2_event_s | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkFwupdateMgr.c | 1132 | t2CountNotify→t2_event_d | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkv_main.c | 1090 | t2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 733 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 591 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 667 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 658 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 734 | t2CountNotify | +| SYST_INFO_CDLSuccess ⚠️ | rdkfwupdater | src/flash.c | 137 | flashT2CountNotify→t2_event_d | +| SYST_INFO_CDLSuccess ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 664 | t2CountNotify | +| SYST_INFO_CDLSuccess ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 715 | t2CountNotify | +| SYST_INFO_Core_accum | sysint | lib/rdk/core_shell.sh | 166 | t2ValNotify | +| SYST_INFO_CoreFull_accum | sysint | lib/rdk/core_shell.sh | 157 | t2ValNotify | +| SYST_INFO_CoreIMP_accum | sysint | lib/rdk/core_shell.sh | 158 | t2ValNotify | +| SYST_INFO_CoreNotProcessed | sysint | lib/rdk/core_shell.sh | 365 | t2CountNotify | +| SYST_INFO_CoreProcessed | sysint | lib/rdk/core_shell.sh | 184 | t2CountNotify | +| SYST_INFO_CoreProcessed_accum | sysint | lib/rdk/core_shell.sh | 185 | t2ValNotify | +| SYST_INFO_CoreUpldSkipped | crashupload | c_sourcecode/src/utils/system_utils.c | 145 | t2CountNotify→t2_event_d | +| SYST_INFO_CoreUpldSkipped | crashupload | runDumpUpload.sh | 662 | t2CountNotify | +| SYST_INFO_CrashedProc_accum | sysint | lib/rdk/core_shell.sh | 150 | t2ValNotify | +| SYST_INFO_CURL6 ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 283 | t2CountNotify | +| SYST_INFO_CURL6 ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 283 | t2CountNotify | +| SYST_INFO_CURL6 ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 278 | t2CountNotify→t2_event_d | +| SYST_INFO_DevicenotActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1233 | t2_event_s | +| SYST_INFO_DevicenotActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1273 | t2_event_s | +| SYST_INFO_ETHConn | sysint | lib/rdk/networkConnectionRecovery.sh | 162 | t2CountNotify | +| SYST_INFO_FetchFWCTN | rdkfwupdater | src/chunk.c | 95 | t2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 605 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 423 | t2CountNotify | +| SYST_INFO_FWCOMPLETE ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 474 | t2CountNotify | +| SYST_INFO_FWUpgrade_Exit ⚠️ | rdkfwupdater | src/device_status_helper.c | 80 | t2CountNotify→t2_event_d | +| SYST_INFO_FWUpgrade_Exit ⚠️ | sysint | lib/rdk/swupdate_utility.sh | 130 | t2CountNotify | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 331 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 660 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 796 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 929 | t2_event_s | +| SYST_INFO_Http302 | rdkfwupdater | src/rdkv_upgrade.c | 156 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_ImgFlashOK | rdkfwupdater | src/flash.c | 163 | flashT2CountNotify→t2_event_d | +| SYST_INFO_JSPPShutdown | entservices-monitor | plugin/Monitor.h | 963 | t2_event_d | +| SYST_INFO_lu_success ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 135 | t2_count_notify→t2_event_d | +| SYST_INFO_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 517 | t2CountNotify | +| SYST_INFO_LUattempt ⚠️ | dcm-agent | uploadstblogs/src/retry_logic.c | 55 | t2_count_notify→t2_event_d | +| SYST_INFO_LUattempt ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 511 | t2CountNotify | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1929 | t2_event_d | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 2745 | t2_event_d | +| SYST_INFO_MemAvailable_split | sysint | lib/rdk/system_info_collector.sh | 70 | t2ValNotify | +| SYST_INFO_minidumpUpld | crashupload | c_sourcecode/src/upload/upload.c | 429 | t2CountNotify→t2_event_d | +| SYST_INFO_minidumpUpld | crashupload | runDumpUpload.sh | 1141 | t2CountNotify | +| SYST_INFO_minidumpUpld | crashupload | uploadDumps_TestCases.md | 1795 | t2CountNotify | +| SYST_INFO_mtls_xpki ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 100 | t2_count_notify→t2_event_d | +| SYST_INFO_mtls_xpki ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 355 | t2CountNotify | +| SYST_INFO_NewXactToken_success | authservice-cpc | authservice.cpp | 335 | t2_event_s | +| SYST_INFO_NewXactToken_success | authservice-cpc | authservice.cpp | 417 | t2_event_s | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkFwupdateMgr.c | 670 | t2CountNotify→t2_event_d | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkv_main.c | 619 | t2CountNotify→t2_event_d | +| SYST_INFO_PartnerId | sysint | lib/rdk/getDeviceId.sh | 77 | t2ValNotify | +| SYST_INFO_PC_RF4CE | sysint | lib/rdk/core_shell.sh | 115 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | dcm-agent | uploadstblogs/src/strategies.c | 953 | t2_count_notify→t2_event_d | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 883 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 886 | t2CountNotify | +| SYST_INFO_PDRIUpgSuccess | rdkfwupdater | src/rdkv_upgrade.c | 629 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_ProvisioingSucc | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 737 | t2_event_s | +| SYST_INFO_PRXR_Ver_split | rdkfwupdater | src/json_process.c | 281 | t2ValNotify→t2_event_s | +| SYST_INFO_Redrecovery | sysint-cpc | lib/rdk/xconfImageCheck.sh | 388 | t2CountNotify | +| SYST_INFO_RedStateRecovery | rdkfwupdater | src/rdkv_upgrade.c | 1058 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_RedstateSet | rdkfwupdater | src/device_status_helper.c | 370 | t2CountNotify→t2_event_d | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 925 | t2_event_s | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1141 | t2_event_s | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1347 | t2_event_s | +| SYST_INFO_SAME_FWCTN | rdkfwupdater | src/chunk.c | 101 | t2CountNotify→t2_event_d | +| SYST_INFO_SigDump_split | sysint | lib/rdk/core_shell.sh | 152 | t2ValNotify | +| SYST_INFO_SOMT | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 477 | t2_event_d | +| SYST_INFO_SwapCached_split | sysint | lib/rdk/system_info_collector.sh | 80 | t2ValNotify | +| SYST_INFO_SwapFree_split | sysint | lib/rdk/system_info_collector.sh | 86 | t2ValNotify | +| SYST_INFO_SwapTotal_split | sysint | lib/rdk/system_info_collector.sh | 83 | t2ValNotify | +| SYST_INFO_swdlSameImg ⚠️ | rdkfwupdater | src/device_status_helper.c | 912 | t2CountNotify→t2_event_d | +| SYST_INFO_swdlSameImg ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 515 | t2CountNotify | +| SYST_INFO_swdlSameImg ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 566 | t2CountNotify | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | rdkfwupdater | src/device_status_helper.c | 905 | t2CountNotify→t2_event_d | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 519 | t2CountNotify | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 570 | t2CountNotify | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkFwupdateMgr.c | 1181 | t2CountNotify→t2_event_d | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkv_main.c | 1123 | t2CountNotify→t2_event_d | +| SYST_INFO_SYSBUILD | systemtimemgr | systimerfactory/rdkdefaulttimesync.cpp | 131 | t2CountNotify→t2_event_d | +| SYST_INFO_SYSBUILD | systemtimemgr | systimerfactory/rdkdefaulttimesync.cpp | 131 | t2CountNotify→t2_event_d | +| SYST_INFO_Thrtl_Enable | rdkfwupdater | src/rdkv_upgrade.c | 989 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_TLS_xconf | rdkfwupdater | src/rdkv_upgrade.c | 978 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_TVActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1229 | t2_event_s | +| SYST_INFO_TVActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1269 | t2_event_s | +| SYST_INFO_v2_fetchCalled | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1177 | t2_event_s | +| SYST_INFO_v2FKPS_Good | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1191 | t2_event_s | +| SYST_INFO_v2FKPS_NoFetch | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1167 | t2_event_s | +| SYST_INFO_v2FKPS_provCalled | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1184 | t2_event_s | +| SYST_INFO_v2FKPSSuccess | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1195 | t2_event_s | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 144 | t2CountNotify | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 155 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 514 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 563 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 581 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 630 | t2CountNotify | +| SYST_INFO_XCONFConnect ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 378 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_XCONFConnect ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 505 | t2CountNotify | +| SYST_INFO_XCONFConnect ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 572 | t2CountNotify | +| SYST_SWDL_Retry_split ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 598 | t2ValNotify | +| SYST_SWDL_Retry_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 649 | t2ValNotify | +| SYST_WARN_ClkNotSet | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 590 | t2_event_s | +| SYST_WARN_ClkNotSet | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1119 | t2_event_s | +| SYST_WARN_CompFail | crashupload | c_sourcecode/src/archive/archive.c | 414 | t2ValNotify→t2_event_s | +| SYST_WARN_CompFail | crashupload | runDumpUpload.sh | 1012 | t2CountNotify | +| SYST_WARN_CoreNP_accum | sysint | lib/rdk/core_shell.sh | 366 | t2ValNotify | +| SYST_WARN_dcm_curl28 | sysint | lib/rdk/xconfImageCheck.sh | 416 | t2CountNotify | +| SYST_WARN_GW100PERC_PACKETLOSS | sysint | lib/rdk/networkConnectionRecovery.sh | 249 | t2CountNotify | +| SYST_WARN_NoMinidump | crashupload | c_sourcecode/src/utils/lock_manager.c | 42 | t2CountNotify→t2_event_d | +| SYST_WARN_NoMinidump | crashupload | runDumpUpload.sh | 231 | t2CountNotify | +| SYST_WARN_UPGD_SKIP ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 921 | t2ValNotify→t2_event_s | +| SYST_WARN_UPGD_SKIP ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 158 | t2ValNotify | +| SYST_WARN_UPGD_SKIP ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 164 | t2ValNotify | +| TEST_EVENT_1 | telemetry | source/testApp/testCommonLibApi.c | 79 | t2_event_d | +| TEST_EVENT_2 | telemetry | source/testApp/testCommonLibApi.c | 81 | t2_event_s | +| TEST_lu_success ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 532 | t2_count_notify→t2_event_d | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 619 | t2CountNotify | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 648 | t2CountNotify | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 290 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 542 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 290 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 542 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 201 | t2CountNotify | +| Test_SWReset ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 220 | t2CountNotify | +| TimeZone_split | sysint | lib/rdk/getTimeZone.sh | 69 | t2ValNotify | +| TR69HOSTIF_GET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 171 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 160 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 205 | t2ValNotify→t2_event_s | +| TR69HOSTIF_SET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 260 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 249 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 291 | t2ValNotify→t2_event_s | +| vmstats_split | sysint | lib/rdk/vm-statistics.sh | 32 | t2ValNotify | +| WIFI_ERROR_PSM_GetRecordFail | telemetry | source/testApp/testCommonLibApi.c | 69 | t2_event_s | +| WIFI_INFO_MvdToPrvSSID | lostandfound-cpc | src/lost_and_found.c | 1491 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_Lnf463 | lostandfound-cpc | src/lost_and_found.c | 854 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_461 | lostandfound-cpc | src/lost_and_found.c | 852 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_464 | lostandfound-cpc | src/lost_and_found.c | 856 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_466 | lostandfound-cpc | src/lost_and_found.c | 858 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_cred_xPKI | lostandfound-cpc | src/lost_and_found.c | 1440 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_lfat_XPKI | lostandfound-cpc | src/lost_and_found.c | 1376 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_XPKI_EAP-TLS | lostandfound-cpc | src/lost_and_found.c | 1313 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_reassoc | sysint | lib/rdk/networkConnectionRecovery.sh | 183 | t2CountNotify | +| WIFIV_INFO_HAL_RX_Bitrate | wifimetrics-cpc | plugin/src/StaRateInfoReader.cpp | 75 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_HAL_TX_Bitrate | wifimetrics-cpc | plugin/src/StaRateInfoReader.cpp | 74 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_HAL_WiFiChannelUtilization_split | wifimetrics-cpc | plugin/src/ChannelUtilizationReader.cpp | 147 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_LnF_cred_xPKI | lostandfound-cpc | src/lost_and_found.c | 1463 | laf_telemetry_event_d→t2_event_d | +| WIFIV_INFO_LnF_lfat_XPKI | lostandfound-cpc | src/lost_and_found.c | 1399 | laf_telemetry_event_d→t2_event_d | +| WIFIV_INFO_LnfConnected | lostandfound-cpc | src/lost_and_found.c | 1386 | laf_telemetry_event_d→t2_event_d | +| WIFIV_SET_BGSCAN_PARAMETERS | wifioptimizer-cpc | src/main.c | 253 | telemetry_event_s→t2_event_s | +| WIFIV_WARN_LnF_xPKI | lostandfound-cpc | src/lost_and_found.c | 1329 | laf_telemetry_event_d→t2_event_d | +| WIFIV_WARN_PL_ | sysint | lib/rdk/networkConnectionRecovery.sh | 271 | t2CountNotify | +| WIFIV_WARN_PL_10PERC | sysint | lib/rdk/networkConnectionRecovery.sh | 280 | t2CountNotify | +| WPE_ERR_rtrmfplayer_crash | sysint | lib/rdk/core_shell.sh | 118 | t2CountNotify | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 74 | t2_event_s | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 114 | t2_event_s | +| xconf_couldnt_resolve | rdkfwupdater | src/rdkv_upgrade.c | 591 | Upgradet2CountNotify→t2_event_d | +| Xi_wifiMAC_split | sysint | lib/rdk/NM_Dispatcher.sh | 120 | t2ValNotify | +| xr_fwdnld_split | rdkfwupdater | src/rdkFwupdateMgr.c | 576 | t2ValNotify→t2_event_s | +| xr_fwdnld_split | rdkfwupdater | src/rdkv_main.c | 526 | t2ValNotify→t2_event_s | + +## Dynamic Markers +Markers containing shell variables (`$var`, `${var}`) that resolve at runtime. + +| Marker Pattern | Component | File Path | Line | API | +|----------------|-----------|-----------|------|-----| +| SYST_ERR_$source | sysint | lib/rdk/rebootNow.sh | 143 | t2CountNotify | +| SYST_ERR_$source_reboot | sysint | lib/rdk/rebootNow.sh | 164 | t2CountNotify | +| SYST_ERR_CrashSig$2 | sysint | lib/rdk/core_shell.sh | 153 | t2CountNotify | +| WIFIV_INFO_NO${version}ROUTE | sysint | lib/rdk/networkConnectionRecovery.sh | 258 | t2CountNotify | + +## Duplicate Markers +⚠️ **CDL_INFO_inprogressExit** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:755 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:806 (`t2CountNotify`) + +⚠️ **CDLrdkportal_split** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:377 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:178 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:179 (`t2ValNotify`) + +⚠️ **certerr_split** - Found in 8 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:213 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:271 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:213 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:271 (`t2ValNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:267 (`t2ValNotify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:458 (`t2_val_notify→t2_event_s`) +- rdkfwupdater: src/rdkv_upgrade.c:284 (`Upgradet2ValNotify→t2_event_s`) +- rdm: scripts/downloadUtils.sh:452 (`t2ValNotify`) +- rdm-agent: scripts/downloadUtils.sh:417 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:307 (`t2ValNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:408 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:353 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:435 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:484 (`t2ValNotify`) + +⚠️ **CurlRet_split** - Found in 3 components: +- rdkfwupdater: src/rdkv_main.c:1166 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:418 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:348 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:442 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:491 (`t2ValNotify`) + +⚠️ **HDMI_DeviceInfo_split** - Found in 2 components: +- entservices-hdmicecsink: plugin/HdmiCecSinkImplementation.cpp:295 (`t2_event_s`) +- entservices-hdmicecsource: plugin/HdmiCecSourceImplementation.cpp:215 (`t2_event_s`) + +⚠️ **LUCurlErr_split** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:214 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:342 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:431 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:518 (`t2_val_notify→t2_event_s`) +- sysint: lib/rdk/uploadSTBLogs.sh:338 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:614 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:645 (`t2ValNotify`) + +⚠️ **NF_ERR_rdm_filenotfound_extraction** - Found in 2 components: +- rdm: scripts/downloadUtils.sh:653 (`t2CountNotify`) +- rdm-agent: scripts/downloadUtils.sh:622 (`t2CountNotify`) + +⚠️ **NF_INFO_rdm_success** - Found in 2 components: +- rdm: scripts/packagerMgr.sh:333 (`t2CountNotify`) +- rdm-agent: src/rdm_downloadmgr.c:319 (`t2ValNotify→t2_event_s`) +- rdm-agent: src/rdm_downloadmgr.c:335 (`t2ValNotify→t2_event_s`) + +⚠️ **PDRI_Version_split** - Found in 3 components: +- rdkfwupdater: src/deviceutils/device_api.c:163 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:458 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:525 (`t2ValNotify`) + +⚠️ **RCU_FWver_split** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:395 (`t2ValNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:541 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:422 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:608 (`t2ValNotify`) + +⚠️ **RDM_ERR_rdm_retry_fail** - Found in 2 components: +- rdm: scripts/downloadUtils.sh:416 (`t2CountNotify`) +- rdm-agent: scripts/downloadUtils.sh:378 (`t2CountNotify`) + +⚠️ **RDM_ERR_rsa_signature_failed** - Found in 2 components: +- rdm: scripts/opensslVerifier.sh:121 (`t2CountNotify`) +- rdm: scripts/downloadMgr.sh:437 (`t2CountNotify`) +- rdm-agent: src/rdm_downloadmgr.c:308 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_downloadmgr.c:324 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_packagemgr.c:232 (`t2CountNotify→t2_event_d`) + +⚠️ **RDM_INFO_rsa_valid_signature** - Found in 2 components: +- rdm: scripts/packagerMgr.sh:263 (`t2CountNotify`) +- rdm-agent: src/rdm_openssl.c:981 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_downloadutils.c:629 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_packagemgr.c:63 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_ERROR_S3CoreUpload_Failed** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:281 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:281 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:275 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_INFO_CodBPASS** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:825 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:538 (`t2CountNotify`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:620 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:589 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:671 (`t2CountNotify`) + +⚠️ **SYS_INFO_S3CoreUploaded** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:289 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:289 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:297 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_INFO_xPKI_Static_Fallback** - Found in 2 components: +- sslcerts-cpc: xupnpcerts/idm_certs.sh:65 (`t2ValNotify`) +- sslcerts-cpc: xupnpcerts/hrot_idm_certs.sh:101 (`t2ValNotify`) +- sslcerts-cpc: xupnpcerts/dpcg.sh:36 (`t2ValNotify`) +- sysint-cpc: lib/rdk/exec_curl_mtls.sh:73 (`t2ValNotify`) +- sysint-cpc: lib/rdk/mtlsUtils.sh:78 (`t2ValNotify`) + +⚠️ **SYST_ERR_10Times_reboot** - Found in 3 components: +- reboot-manager: src/reboot_reason_classify.c:261 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:261 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/update_previous_reboot_info.sh:127 (`t2CountNotify`) +- sysint: lib/rdk/update_previous_reboot_info.sh:140 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:152 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:165 (`t2CountNotify`) + +⚠️ **SYST_ERR_CDLFail** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:594 (`Upgradet2CountNotify→t2_event_d`) +- rdkfwupdater: src/rdkv_upgrade.c:646 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:661 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:712 (`t2CountNotify`) + +⚠️ **SYST_ERR_Curl28** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:216 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:344 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:433 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:520 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:370 (`t2CountNotify`) + +⚠️ **SYST_ERR_FW_RFC_disabled** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:694 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:745 (`t2CountNotify`) + +⚠️ **SYST_ERR_FWdnldFail** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:401 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:440 (`t2ValNotify`) + +⚠️ **SYST_ERR_LogUpload_Failed** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:166 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:552 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:657 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:780 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:871 (`t2CountNotify`) + +⚠️ **SYST_ERR_PDRI_VFail** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:453 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:520 (`t2CountNotify`) + +⚠️ **SYST_ERR_ProcessCrash** - Found in 2 components: +- crashupload: c_sourcecode/src/scanner/scanner.c:369 (`t2CountNotify→t2_event_d`) +- crashupload: runDumpUpload.sh:761 (`t2CountNotify`) +- crashupload: uploadDumps_TestCases.md:1590 (`t2CountNotify`) +- sysint: lib/rdk/core_shell.sh:81 (`t2CountNotify`) + +⚠️ **SYST_ERR_Xconf28** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:512 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:561 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:579 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:628 (`t2CountNotify`) + +⚠️ **SYST_INFO_cb_xconf** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:733 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:591 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:667 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:658 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:734 (`t2CountNotify`) + +⚠️ **SYST_INFO_CDLSuccess** - Found in 3 components: +- rdkfwupdater: src/flash.c:137 (`flashT2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:664 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:715 (`t2CountNotify`) + +⚠️ **SYST_INFO_CURL6** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:283 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:283 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:278 (`t2CountNotify→t2_event_d`) + +⚠️ **SYST_INFO_FWCOMPLETE** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:605 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:423 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:474 (`t2CountNotify`) + +⚠️ **SYST_INFO_FWUpgrade_Exit** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:80 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/swupdate_utility.sh:130 (`t2CountNotify`) + +⚠️ **SYST_INFO_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:135 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:517 (`t2CountNotify`) + +⚠️ **SYST_INFO_LUattempt** - Found in 2 components: +- dcm-agent: uploadstblogs/src/retry_logic.c:55 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:511 (`t2CountNotify`) + +⚠️ **SYST_INFO_mtls_xpki** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:100 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:355 (`t2CountNotify`) + +⚠️ **SYST_INFO_PDRILogUpload** - Found in 2 components: +- dcm-agent: uploadstblogs/src/strategies.c:953 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:883 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:886 (`t2CountNotify`) + +⚠️ **SYST_INFO_swdlSameImg** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:912 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:515 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:566 (`t2CountNotify`) + +⚠️ **SYST_INFO_SwdlSameImg_Stndby** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:905 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:519 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:570 (`t2CountNotify`) + +⚠️ **SYST_INFO_Xconf200** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:514 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:563 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:581 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:630 (`t2CountNotify`) + +⚠️ **SYST_INFO_XCONFConnect** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:378 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:505 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:572 (`t2CountNotify`) + +⚠️ **SYST_SWDL_Retry_split** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:598 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:649 (`t2ValNotify`) + +⚠️ **SYST_WARN_UPGD_SKIP** - Found in 3 components: +- rdkfwupdater: src/deviceutils/device_api.c:921 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:158 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:164 (`t2ValNotify`) + +⚠️ **TEST_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:532 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:619 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:648 (`t2CountNotify`) + +⚠️ **Test_SWReset** - Found in 3 components: +- reboot-manager: src/reboot_reason_classify.c:290 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:542 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:290 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:542 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/update_previous_reboot_info.sh:201 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:220 (`t2CountNotify`) + +## Unresolved Components +Components from the input file that could not be scanned. + +| Component | Version | Reason | +|-----------|---------|--------| +| airplay-application-cpc | 43c9d71147fa | Clone failed for rdk-e/airplay-application-cpc | +| nuance-eve | 163ec5ef1cfa | Clone failed for rdk-e/nuance-eve | +| ralf-utils | 2eda857fd887 | Clone failed for rdkcentral/ralf-utils | diff --git a/report6.md b/report6.md new file mode 100644 index 00000000..7e90cfd3 --- /dev/null +++ b/report6.md @@ -0,0 +1,757 @@ +# Telemetry Marker Inventory +**Branch**: per-component (from versions-e.txt) +**Organizations**: rdkcentral, rdk-e, rdk-common, rdk-gdcs +**Generated**: 2026-03-29 18:30:14 UTC + +## Summary +- **Total Markers**: 491 +- **Static Markers**: 487 +- **Dynamic Markers**: 4 (contain shell variables) +- **Components Scanned**: 196 +- **Duplicate Markers**: 43 ⚠️ + +## Marker Inventory +| Marker Name | Component | File Path | Line | API | +|-------------|-----------|-----------|------|-----| +| 5GclientMac_split | telemetry | source/testApp/testCommonLibApi.c | 73 | t2_event_s | +| ActStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1225 | t2_event_s | +| ActStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1265 | t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 617 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_accum | crashupload | runDumpUpload.sh | 826 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | c_sourcecode/src/scanner/scanner.c | 616 | t2ValNotify→t2_event_s | +| APP_ERROR_Crashed_split | crashupload | runDumpUpload.sh | 825 | t2ValNotify | +| APP_ERROR_Crashed_split | crashupload | uploadDumps_TestCases.md | 1618 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | c_sourcecode/src/scanner/scanner.c | 620 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo | crashupload | runDumpUpload.sh | 828 | t2ValNotify | +| APP_ERROR_CrashInfo | crashupload | uploadDumps_TestCases.md | 1619 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | c_sourcecode/src/scanner/scanner.c | 622 | t2ValNotify→t2_event_s | +| APP_ERROR_CrashInfo_status | crashupload | runDumpUpload.sh | 830 | t2ValNotify | +| APP_ERROR_CrashInfo_status | crashupload | uploadDumps_TestCases.md | 1620 | t2ValNotify | +| APPARMOR_C_split: | rdk-apparmor-profiles | apparmor_parse.sh | 119 | t2ValNotify | +| APPARMOR_E_split: | rdk-apparmor-profiles | apparmor_parse.sh | 126 | t2ValNotify | +| AS_ERR_Corrupted_Credential | authservice-cpc | authservice.cpp | 431 | t2_event_s | +| AS_ERR_RSAInitFailed | authservice-cpc | authservice.cpp | 292 | t2_event_s | +| AS_WARN_EmptyPartnerID | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 359 | t2_event_s | +| Board_temperature_split | sysint | lib/rdk/temperature-telemetry.sh | 27 | t2ValNotify | +| btime_ipacqEth_split | sysint | lib/rdk/ipv6addressChange.sh | 62 | t2ValNotify | +| btime_ipacqWifi_split | sysint | lib/rdk/ipv6addressChange.sh | 65 | t2ValNotify | +| CA_Store_split | rdk-ca-store-cpc | scripts/check-ca-update.sh | 78 | t2ValNotify | +| CDL_INFO_inprogressExit ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 755 | t2CountNotify | +| CDL_INFO_inprogressExit ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 806 | t2CountNotify | +| CDLrdkportal_split ⚠️ | rdkfwupdater | src/device_status_helper.c | 377 | t2CountNotify→t2_event_d | +| CDLrdkportal_split ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 178 | t2ValNotify | +| CDLrdkportal_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 179 | t2ValNotify | +| CDLsuspended_split | rdkfwupdater | src/rdkv_upgrade.c | 146 | Upgradet2CountNotify→t2_event_d | +| cert_info_split | sslcerts-cpc | Scripts/cert-monitoring.sh | 65 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 213 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 271 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 213 | t2ValNotify | +| certerr_split ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 271 | t2ValNotify | +| certerr_split ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 267 | t2ValNotify→t2_event_s | +| certerr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 458 | t2_val_notify→t2_event_s | +| certerr_split ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 284 | Upgradet2ValNotify→t2_event_s | +| certerr_split ⚠️ | rdm | scripts/downloadUtils.sh | 452 | t2ValNotify | +| certerr_split ⚠️ | rdm-agent | scripts/downloadUtils.sh | 417 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 307 | t2ValNotify | +| certerr_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 408 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 353 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 435 | t2ValNotify | +| certerr_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 484 | t2ValNotify | +| cloudFWFile_split | rdkfwupdater | src/device_status_helper.c | 878 | t2ValNotify→t2_event_s | +| core_split | sysint | lib/rdk/core_shell.sh | 165 | t2ValNotify | +| CoredumpFail_split | crashupload | c_sourcecode/src/upload/upload.c | 286 | t2ValNotify→t2_event_s | +| coreUpld_split | crashupload | c_sourcecode/src/upload/upload.c | 228 | t2ValNotify→t2_event_s | +| cpuinfo_split | sysint | lib/rdk/system_info_collector.sh | 56 | t2ValNotify | +| cpuinfo_split | sysint | lib/rdk/cpu-statistics.sh | 30 | t2ValNotify | +| crashedContainerAppname_split | crashupload | c_sourcecode/src/scanner/scanner.c | 603 | t2ValNotify→t2_event_s | +| crashedContainerAppname_split | crashupload | runDumpUpload.sh | 817 | t2ValNotify | +| crashedContainerAppname_split | crashupload | uploadDumps_TestCases.md | 1615 | t2ValNotify | +| crashedContainerName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 601 | t2ValNotify→t2_event_s | +| crashedContainerName_split | crashupload | runDumpUpload.sh | 815 | t2ValNotify | +| crashedContainerName_split | crashupload | uploadDumps_TestCases.md | 1613 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | c_sourcecode/src/scanner/scanner.c | 604 | t2ValNotify→t2_event_s | +| crashedContainerProcessName_split | crashupload | runDumpUpload.sh | 818 | t2ValNotify | +| crashedContainerProcessName_split | crashupload | uploadDumps_TestCases.md | 1616 | t2ValNotify | +| crashedContainerStatus_split | crashupload | c_sourcecode/src/scanner/scanner.c | 602 | t2ValNotify→t2_event_s | +| crashedContainerStatus_split | crashupload | runDumpUpload.sh | 816 | t2ValNotify | +| crashedContainerStatus_split | crashupload | uploadDumps_TestCases.md | 1614 | t2ValNotify | +| CrashedProc_split | sysint | lib/rdk/core_shell.sh | 149 | t2ValNotify | +| Critical firmware upgrade in progress | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1261 | t2_event_d | +| CurlRet_split ⚠️ | rdkfwupdater | src/rdkv_main.c | 1166 | t2CountNotify→t2_event_d | +| CurlRet_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 418 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 348 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 442 | t2ValNotify | +| CurlRet_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 491 | t2ValNotify | +| CurrentActivationStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1224 | t2_event_s | +| CurrentActivationStatus_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1264 | t2_event_s | +| DeviceCertUpdateFailure | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunCertChecker.sh | 120 | t2CountNotify | +| DeviceCertUpdateFailure | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 70 | t2CountNotify | +| emmcNoFile_split | sysint | lib/rdk/eMMC_Upgrade.sh | 131 | t2ValNotify | +| emmcVer_split | sysint | lib/rdk/eMMC_Upgrade.sh | 66 | t2ValNotify | +| FCR_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1174 | t2_event_s | +| Filesize_split | rdkfwupdater | src/rdkv_upgrade.c | 623 | Upgradet2CountNotify→t2_event_d | +| FREE_MEM_split | sysint | lib/rdk/system_info_collector.sh | 59 | t2ValNotify | +| FREE_MEM_split | sysint | lib/rdk/cpu-statistics.sh | 33 | t2ValNotify | +| FS_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunFScertifier.sh | 240 | t2CountNotify | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 295 | t2_event_s | +| HDMI_DeviceInfo_split ⚠️ | entservices-hdmicecsource | plugin/HdmiCecSourceImplementation.cpp | 215 | t2_event_s | +| HDMI_INFO_PORT1connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1965 | t2_event_d | +| HDMI_INFO_PORT2connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1968 | t2_event_d | +| HDMI_INFO_PORT3connected | entservices-hdmicecsink | plugin/HdmiCecSinkImplementation.cpp | 1971 | t2_event_d | +| HDMI_WARN_CEC_InvalidParamExcptn | hdmicec | ccec/src/Bus.cpp | 346 | t2_event_s | +| HROT_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/genericdaemon/Scripts/check_pph.sh | 18 | t2CountNotify | +| HROT_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 325 | t2CountNotify | +| HROT_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 328 | t2CountNotify | +| HROT_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/genericdaemon/Scripts/check_pph.sh | 23 | t2CountNotify | +| HROT_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 333 | t2CountNotify | +| HROT_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/Generic/scripts/rdkssacertcheck.sh | 239 | t2CountNotify | +| lnfErr_split | lostandfound-cpc | src/lost_and_found.c | 860 | laf_telemetry_event_d→t2_event_d | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 214 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 342 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 431 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 518 | t2_val_notify→t2_event_s | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 338 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 614 | t2ValNotify | +| LUCurlErr_split ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 645 | t2ValNotify | +| lxybundleversion_split | rdkfwupdater | src/json_process.c | 284 | t2ValNotify→t2_event_s | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 246 | t2_event_s | +| marker | rdkfwupdater | unittest/basic_rdkv_main_gtest.cpp | 247 | t2ValNotify→t2_event_s | +| MFR_ERR_MFRSV_coredetected | sysint | lib/rdk/core_shell.sh | 85 | t2CountNotify | +| NF_ERR_rdm_filenotfound_extraction ⚠️ | rdm | scripts/downloadUtils.sh | 653 | t2CountNotify | +| NF_ERR_rdm_filenotfound_extraction ⚠️ | rdm-agent | scripts/downloadUtils.sh | 622 | t2CountNotify | +| NF_INFO_codedumped | sysint | lib/rdk/core_shell.sh | 121 | t2CountNotify | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_downloadmgr.c | 279 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_package_failure | rdm-agent | src/rdm_packagemgr.c | 193 | t2CountNotify→t2_event_d | +| NF_INFO_rdm_success ⚠️ | rdm | scripts/packagerMgr.sh | 333 | t2CountNotify | +| NF_INFO_rdm_success ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 319 | t2ValNotify→t2_event_s | +| NF_INFO_rdm_success ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 335 | t2ValNotify→t2_event_s | +| PCR_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1188 | t2_event_s | +| PDRI_Version_split ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 163 | t2ValNotify→t2_event_s | +| PDRI_Version_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 458 | t2ValNotify | +| PDRI_Version_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 525 | t2ValNotify | +| PKCS11_migration_NO_opcert | lxy-cpc | scripts/lxyinit.sh | 251 | t2CountNotify | +| PKCS11_migration_NO_opcert | lxy-cpc | scripts/lxyinit.sh | 251 | t2CountNotify | +| PKCS11_migration_removing_SEcert | lxy-cpc | scripts/lxyinit.sh | 90 | t2CountNotify | +| PKCS11_migration_removing_SEcert | lxy-cpc | scripts/lxyinit.sh | 90 | t2CountNotify | +| PKCS11_migration_SEcert_removing | lxy-cpc | scripts/lxyinit.sh | 99 | t2CountNotify | +| PKCS11_migration_SEcert_removing | lxy-cpc | scripts/lxyinit.sh | 99 | t2CountNotify | +| processCrash_split | crashupload | c_sourcecode/src/scanner/scanner.c | 367 | t2ValNotify→t2_event_s | +| processCrash_split | crashupload | runDumpUpload.sh | 759 | t2ValNotify | +| processCrash_split | crashupload | uploadDumps_TestCases.md | 1588 | t2ValNotify | +| PRVMGR_ERR_File | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1398 | t2_event_d | +| PRVMGR_ERR_PollingTimeout | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 655 | t2_event_d | +| PRVMGR_ERR_XW3RegFail | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1023 | t2_event_d | +| PRVMGR_INFO_GotXBOId | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 498 | t2_event_d | +| PRVMGR_INFO_MobileDisconn | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1304 | t2_event_d | +| PRVMGR_INFO_MobilePaired | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1015 | t2_event_d | +| PRVMGR_INFO_Provisioned | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1470 | t2_event_d | +| PRVMGR_INFO_PRVSuccess | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1232 | t2_event_d | +| PRVMGR_INFO_StartBeacon | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 988 | t2_event_d | +| PRVMGR_INFO_WIFIAssfail | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1186 | t2_event_d | +| PRVMGR_INFO_WIFIAssOk | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1180 | t2_event_d | +| PRVMGR_INFO_XBOSuccess | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1055 | t2_event_d | +| PRVMGR_INFO_XW3RegOk | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 1027 | t2_event_d | +| PRVMGR_split | lostandfound-cpc | ble/prvn_mgr/prvn_mgr.c | 837 | t2_event_s | +| RCU_FWver_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 395 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 541 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 422 | t2ValNotify | +| RCU_FWver_split ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 608 | t2ValNotify | +| RDM_ERR_package_failed | rdm-agent | src/rdm_downloadutils.c | 296 | t2CountNotify→t2_event_d | +| RDM_ERR_package_notfound | rdm-agent | src/rdm_downloadmgr.c | 159 | t2CountNotify→t2_event_d | +| RDM_ERR_rdm_package_notfound | rdm | scripts/downloadMgr.sh | 404 | t2CountNotify | +| RDM_ERR_rdm_retry_fail ⚠️ | rdm | scripts/downloadUtils.sh | 416 | t2CountNotify | +| RDM_ERR_rdm_retry_fail ⚠️ | rdm-agent | scripts/downloadUtils.sh | 378 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm | scripts/opensslVerifier.sh | 121 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm | scripts/downloadMgr.sh | 437 | t2CountNotify | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 308 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_downloadmgr.c | 324 | t2CountNotify→t2_event_d | +| RDM_ERR_rsa_signature_failed ⚠️ | rdm-agent | src/rdm_packagemgr.c | 232 | t2CountNotify→t2_event_d | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 333 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadComplete | rdm-agent | rdm_main.c | 370 | t2ValNotify→t2_event_s | +| RDM_INFO_AppDownloadSuccess | rdm-agent | rdm_main.c | 378 | t2CountNotify→t2_event_d | +| RDM_INFO_DefaultURL | rdm-agent | src/rdm_downloadutils.c | 102 | t2ValNotify→t2_event_s | +| RDM_INFO_DirectBlocked | rdm-agent | src/rdm_downloadutils.c | 339 | t2CountNotify→t2_event_d | +| RDM_INFO_DownloadSSRURL | rdm-agent | src/rdm_downloadutils.c | 95 | t2ValNotify→t2_event_s | +| RDM_INFO_extraction_complete | rdm-agent | src/rdm_downloadmgr.c | 299 | t2CountNotify→t2_event_d | +| RDM_INFO_package_download | rdm-agent | src/rdm_downloadutils.c | 288 | t2ValNotify→t2_event_s | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm | scripts/packagerMgr.sh | 263 | t2CountNotify | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_openssl.c | 981 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_downloadutils.c | 629 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_valid_signature ⚠️ | rdm-agent | src/rdm_packagemgr.c | 63 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_openssl.c | 985 | t2CountNotify→t2_event_d | +| RDM_INFO_rsa_verify_signature_failure | rdm-agent | src/rdm_downloadutils.c | 632 | t2CountNotify→t2_event_d | +| RDMCAcert_split | rdk-ca-store-cpc | scripts/post_cadl.sh | 126 | t2ValNotify | +| RDMwebuicert_split | sslcerts-cpc | webuicerts/scripts/post_webuicerts.sh | 47 | t2ValNotify | +| RDMxPkicert_split | sslcerts-cpc | RDM-xpki-certs/scripts/post_xpkicertsdl.sh | 53 | t2ValNotify | +| Router_Discovered | networkmanager | tools/upnp/UpnpDiscoveryManager.cpp | 97 | t2_event_s | +| SCARD_INFO_emmc_noUpgd | sysint | lib/rdk/eMMC_Upgrade.sh | 135 | t2CountNotify | +| SEFS_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunSEFScertifier.sh | 243 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 14 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/ssaecckdf/Scripts/check_pph.sh | 15 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/a5000/Scripts/check_pph.sh | 15 | t2CountNotify | +| SEHAL_NO_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 83 | t2CountNotify | +| SEHAL_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 17 | t2CountNotify | +| SEHAL_NON_PROD_KEY | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 86 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/se05x/Scripts/check_pph.sh | 21 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/ssaecckdf/Scripts/check_pph.sh | 19 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/daemon/a5000/Scripts/check_pph.sh | 19 | t2CountNotify | +| SEHAL_SSA_DAMON_FAILED | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunCertChecker.sh | 90 | t2CountNotify | +| SESE_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdkssaRunSESEcertifier.sh | 238 | t2CountNotify | +| SESE_ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/SecureElement/scripts/rdk/rdkssaRunSESEcertifier.sh | 258 | t2CountNotify | +| SHORTS_CONN_SUCCESS | sysint | lib/rdk/startStunnel.sh | 181 | t2CountNotify | +| SHORTS_DEVICE_TYPE_PROD | sysint | lib/rdk/startStunnel.sh | 120 | t2CountNotify | +| SHORTS_DEVICE_TYPE_TEST | sysint | lib/rdk/startStunnel.sh | 115 | t2CountNotify | +| SHORTS_DEVICE_TYPE_UNKNOWN | sysint | lib/rdk/startStunnel.sh | 126 | t2CountNotify | +| SHORTS_SSH_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 176 | t2CountNotify | +| SHORTS_STUNNEL_CERT_FAILURE | sysint | lib/rdk/startStunnel.sh | 101 | t2CountNotify | +| SHORTS_STUNNEL_CLIENT_FAILURE | sysint | lib/rdk/startStunnel.sh | 162 | t2CountNotify | +| ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/xpkicertifier/scripts/rdkssaRunDeviceCertifier.sh | 282 | t2CountNotify | +| ssa_xpki_use_static_url | ssa-cpc | ssa_top/ssa_cpc/ssa_common/providers/CA/xpki/scripts/rdkssacertcheck.sh | 244 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 281 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 281 | t2CountNotify | +| SYS_ERROR_S3CoreUpload_Failed ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 275 | t2CountNotify→t2_event_d | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 162 | t2_event_s | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 625 | t2_event_s | +| SYS_INFO_ActiveCredsMissing | rdkservices-cpc | DeviceProvisioning/rtclient.cpp | 745 | t2_event_s | +| SYS_INFO_CANARY_Update | rdkfwupdater | src/flash.c | 396 | flashT2CountNotify→t2_event_d | +| SYS_INFO_CodBPASS ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 825 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 538 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 620 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 589 | t2CountNotify | +| SYS_INFO_CodBPASS ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 671 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | c_sourcecode/src/scanner/scanner.c | 605 | t2CountNotify→t2_event_d | +| SYS_INFO_CrashedContainer | crashupload | runDumpUpload.sh | 819 | t2CountNotify | +| SYS_INFO_CrashedContainer | crashupload | uploadDumps_TestCases.md | 1617 | t2CountNotify | +| SYS_INFO_DAC_Inject_Failed | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 408 | t2ValNotify→t2_event_s | +| SYS_INFO_DAC_Inject_Success | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 413 | t2ValNotify→t2_event_s | +| SYS_INFO_DEFER_CANARY_REBOOT | rdkfwupdater | src/flash.c | 392 | flashT2CountNotify→t2_event_d | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1156 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_DirectSuccess | rdkfwupdater | src/rdkv_upgrade.c | 1226 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_Invoke_batterymode | telemetry | source/testApp/testCommonLibApi.c | 75 | t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 195 | t2ValNotify→t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 206 | t2ValNotify→t2_event_s | +| SYS_INFO_Matter_DAC_Status | ssa-cpc | ssa_top/ssa_cpc/utils/DACTool/rdkssa_DAC_provisioning.c | 210 | t2ValNotify→t2_event_s | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1028 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_MTLS_enable | rdkfwupdater | src/rdkv_upgrade.c | 1050 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_S3CoreUploaded ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 289 | t2CountNotify | +| SYS_INFO_S3CoreUploaded ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 289 | t2CountNotify | +| SYS_INFO_S3CoreUploaded ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 297 | t2CountNotify→t2_event_d | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 434 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_swdltriggered | rdkfwupdater | src/rdkv_upgrade.c | 439 | Upgradet2CountNotify→t2_event_d | +| SYS_INFO_TGZDUMP | crashupload | c_sourcecode/src/scanner/scanner.c | 489 | t2CountNotify→t2_event_d | +| SYS_INFO_TGZDUMP | crashupload | runDumpUpload.sh | 792 | t2CountNotify | +| SYS_INFO_TGZDUMP | crashupload | uploadDumps_TestCases.md | 1641 | t2CountNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/idm_certs.sh | 65 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/hrot_idm_certs.sh | 101 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sslcerts-cpc | xupnpcerts/dpcg.sh | 36 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sysint-cpc | lib/rdk/exec_curl_mtls.sh | 73 | t2ValNotify | +| SYS_INFO_xPKI_Static_Fallback ⚠️ | sysint-cpc | lib/rdk/mtlsUtils.sh | 78 | t2ValNotify | +| SYS_SH_CMReset_PingFailed | telemetry | source/testApp/testCommonLibApi.c | 71 | t2_event_s | +| SYS_SH_lighttpdCrash | telemetry | source/testApp/testCommonLibApi.c | 77 | t2_event_d | +| SYST_ERR_ | sysint | lib/rdk/core_shell.sh | 132 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | reboot-manager | src/reboot_reason_classify.c | 261 | t2CountNotify→t2_event_d | +| SYST_ERR_10Times_reboot ⚠️ | reboot-manager | src/reboot_reason_classify.c | 261 | t2CountNotify→t2_event_d | +| SYST_ERR_10Times_reboot ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 127 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 140 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 152 | t2CountNotify | +| SYST_ERR_10Times_reboot ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 165 | t2CountNotify | +| SYST_ERR_AUTHSERVICE_Read | rdkservices-cpc | AuthService/helpers.cpp | 443 | t2_event_s | +| SYST_ERR_AuthTokenExpiry | rdkservices-cpc | AuthService/AuthServiceImplementation.cpp | 1750 | t2_event_s | +| SYST_ERR_CCNotRepsonding_reboot | sysint | lib/rdk/rebootNow.sh | 140 | t2CountNotify | +| SYST_ERR_cdl_ssr | rdkfwupdater | src/rdkv_upgrade.c | 153 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 594 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 646 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_CDLFail ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 661 | t2CountNotify | +| SYST_ERR_CDLFail ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 712 | t2CountNotify | +| SYST_ERR_CECBusEx | hdmicec | ccec/src/MessageDecoder.cpp | 194 | t2_event_s | +| SYST_ERR_CLIENTCERT_Fail | sysint-cpc | lib/rdk/exec_curl_mtls.sh | 104 | t2ValNotify | +| SYST_ERR_CompFail | crashupload | runDumpUpload.sh | 1021 | t2CountNotify | +| SYST_ERR_COREGZIP | sysint | lib/rdk/core_shell.sh | 177 | t2CountNotify | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 216 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 344 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 433 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 520 | t2_count_notify→t2_event_d | +| SYST_ERR_Curl28 ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 370 | t2CountNotify | +| SYST_ERR_Cyclic_reboot | sysint | lib/rdk/rebootNow.sh | 279 | t2CountNotify | +| SYST_ERR_DiffFWCTN_FLdnld | rdkfwupdater | src/chunk.c | 175 | t2CountNotify→t2_event_d | +| SYST_ERR_DNSFileEmpty | sysint | lib/rdk/networkConnectionRecovery.sh | 339 | t2CountNotify | +| SYST_ERR_DSMGR_reboot | sysint | lib/rdk/rebootNow.sh | 152 | t2CountNotify | +| SYST_ERR_FailureAuthToken | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1326 | t2_event_s | +| SYST_ERR_FKPSError | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 536 | t2_event_s | +| SYST_ERR_FW_RFC_disabled ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 694 | t2CountNotify | +| SYST_ERR_FW_RFC_disabled ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 745 | t2CountNotify | +| SYST_ERR_FWCTNFetch | rdkfwupdater | src/chunk.c | 114 | t2CountNotify→t2_event_d | +| SYST_ERR_FWdnldFail ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 401 | t2ValNotify | +| SYST_ERR_FWdnldFail ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 440 | t2ValNotify | +| SYST_ERR_IARMDEMON_reboot | sysint | lib/rdk/rebootNow.sh | 155 | t2CountNotify | +| SYST_ERR_imageflsfail | rdkfwupdater | src/flash.c | 141 | flashT2CountNotify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 166 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 552 | t2_count_notify→t2_event_d | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 657 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 780 | t2CountNotify | +| SYST_ERR_LogUpload_Failed ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 871 | t2CountNotify | +| SYST_ERR_MaintNetworkFail | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 455 | t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | c_sourcecode/src/archive/archive.c | 306 | t2CountNotify→t2_event_d | +| SYST_ERR_MINIDPZEROSIZE | crashupload | runDumpUpload.sh | 979 | t2CountNotify | +| SYST_ERR_OPTFULL | sysint | lib/rdk/disk_threshold_check.sh | 354 | t2CountNotify | +| SYST_ERR_OverflowMon_crash | sysint | lib/rdk/core_shell.sh | 88 | t2CountNotify | +| SYST_ERR_PC_Conn169 | sysint | lib/rdk/core_shell.sh | 91 | t2CountNotify | +| SYST_ERR_PC_MAF | sysint | lib/rdk/core_shell.sh | 94 | t2CountNotify | +| SYST_ERR_PC_RBI | sysint | lib/rdk/core_shell.sh | 97 | t2CountNotify | +| SYST_ERR_PC_Systemd | sysint | lib/rdk/core_shell.sh | 100 | t2CountNotify | +| SYST_ERR_PC_TTSEngine | sysint | lib/rdk/core_shell.sh | 103 | t2CountNotify | +| SYST_ERR_PDRI_VFail ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 453 | t2CountNotify | +| SYST_ERR_PDRI_VFail ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 520 | t2CountNotify | +| SYST_ERR_PDRIUpg_failure | rdkfwupdater | src/rdkv_upgrade.c | 589 | Upgradet2CountNotify→t2_event_d | +| SYST_ERR_PrevCDL_InProg | sysint | lib/rdk/swupdate_utility.sh | 157 | t2CountNotify | +| SYST_ERR_Process_Crash_accum | crashupload | c_sourcecode/src/scanner/scanner.c | 368 | t2ValNotify→t2_event_s | +| SYST_ERR_Process_Crash_accum | crashupload | runDumpUpload.sh | 760 | t2ValNotify | +| SYST_ERR_Process_Crash_accum | crashupload | uploadDumps_TestCases.md | 1589 | t2ValNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | c_sourcecode/src/scanner/scanner.c | 369 | t2CountNotify→t2_event_d | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | runDumpUpload.sh | 761 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | crashupload | uploadDumps_TestCases.md | 1590 | t2CountNotify | +| SYST_ERR_ProcessCrash ⚠️ | sysint | lib/rdk/core_shell.sh | 81 | t2CountNotify | +| SYST_ERR_ProvisioningFail | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 352 | t2_event_s | +| SYST_ERR_RDMMISSING | rdm-agent | src/rdm_downloadutils.c | 118 | t2ValNotify→t2_event_s | +| SYST_ERR_RedrecoveryCert | sysint-cpc | lib/rdk/xconfImageCheck.sh | 393 | t2CountNotify | +| SYST_ERR_RFC | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1652 | t2_event_d | +| SYST_ERR_Rmfstreamer_crash | sysint | lib/rdk/core_shell.sh | 128 | t2CountNotify | +| SYST_ERR_Rmfstreamer_reboot | sysint | lib/rdk/rebootNow.sh | 158 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 137 | t2CountNotify | +| SYST_ERR_RunPod_reboot | sysint | lib/rdk/rebootNow.sh | 161 | t2CountNotify | +| SYST_ERR_S3signing_failed | cpg-utils-cpc | uploadDumpsToS3.sh | 223 | t2CountNotify | +| SYST_ERR_S3signing_failed | cpg-utils-cpc | uploadDumpsToS3.sh | 223 | t2CountNotify | +| SYST_ERR_syslogng_crash | sysint | lib/rdk/core_shell.sh | 109 | t2CountNotify | +| SYST_ERR_VodApp_restart | sysint | lib/rdk/core_shell.sh | 106 | t2CountNotify | +| SYST_ERR_XACS401 | authservice-cpc | authservice.cpp | 553 | t2_event_s | +| SYST_ERR_XCALDevice_crash | sysint | lib/rdk/core_shell.sh | 124 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 512 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 561 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 579 | t2CountNotify | +| SYST_ERR_Xconf28 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 628 | t2CountNotify | +| SYST_ERR_xraudio_crash | sysint | lib/rdk/core_shell.sh | 112 | t2CountNotify | +| SYST_ERROR_WAI_InitERR | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 648 | t2_event_d | +| SYST_INFO_Act_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1223 | t2_event_s | +| SYST_INFO_Act_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1263 | t2_event_s | +| SYST_INFO_ActivReady | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1312 | t2_event_s | +| SYST_INFO_ACTN_SUCCESS | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1228 | t2_event_s | +| SYST_INFO_ACTN_SUCCESS | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1268 | t2_event_s | +| SYST_INFO_AuthTokenSucc | rdkservices-cpc | DeviceProvisioning/rtcontroller.cpp | 106 | t2_event_s | +| SYST_INFO_AuthTokenSucc | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1290 | t2_event_s | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkFwupdateMgr.c | 1132 | t2CountNotify→t2_event_d | +| SYST_INFO_C_CDL | rdkfwupdater | src/rdkv_main.c | 1090 | t2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 733 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 591 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 667 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 658 | t2CountNotify | +| SYST_INFO_cb_xconf ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 734 | t2CountNotify | +| SYST_INFO_CDLSuccess ⚠️ | rdkfwupdater | src/flash.c | 137 | flashT2CountNotify→t2_event_d | +| SYST_INFO_CDLSuccess ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 664 | t2CountNotify | +| SYST_INFO_CDLSuccess ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 715 | t2CountNotify | +| SYST_INFO_Core_accum | sysint | lib/rdk/core_shell.sh | 166 | t2ValNotify | +| SYST_INFO_CoreFull_accum | sysint | lib/rdk/core_shell.sh | 157 | t2ValNotify | +| SYST_INFO_CoreIMP_accum | sysint | lib/rdk/core_shell.sh | 158 | t2ValNotify | +| SYST_INFO_CoreNotProcessed | sysint | lib/rdk/core_shell.sh | 365 | t2CountNotify | +| SYST_INFO_CoreProcessed | sysint | lib/rdk/core_shell.sh | 184 | t2CountNotify | +| SYST_INFO_CoreProcessed_accum | sysint | lib/rdk/core_shell.sh | 185 | t2ValNotify | +| SYST_INFO_CoreUpldSkipped | crashupload | c_sourcecode/src/utils/system_utils.c | 145 | t2CountNotify→t2_event_d | +| SYST_INFO_CoreUpldSkipped | crashupload | runDumpUpload.sh | 662 | t2CountNotify | +| SYST_INFO_CrashedProc_accum | sysint | lib/rdk/core_shell.sh | 150 | t2ValNotify | +| SYST_INFO_CURL6 ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 283 | t2CountNotify | +| SYST_INFO_CURL6 ⚠️ | cpg-utils-cpc | uploadDumpsToS3.sh | 283 | t2CountNotify | +| SYST_INFO_CURL6 ⚠️ | crashupload | c_sourcecode/src/upload/upload.c | 278 | t2CountNotify→t2_event_d | +| SYST_INFO_DevicenotActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1233 | t2_event_s | +| SYST_INFO_DevicenotActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1273 | t2_event_s | +| SYST_INFO_ETHConn | sysint | lib/rdk/networkConnectionRecovery.sh | 162 | t2CountNotify | +| SYST_INFO_FetchFWCTN | rdkfwupdater | src/chunk.c | 95 | t2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 605 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_FWCOMPLETE ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 423 | t2CountNotify | +| SYST_INFO_FWCOMPLETE ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 474 | t2CountNotify | +| SYST_INFO_FWUpgrade_Exit ⚠️ | rdkfwupdater | src/device_status_helper.c | 80 | t2CountNotify→t2_event_d | +| SYST_INFO_FWUpgrade_Exit ⚠️ | sysint | lib/rdk/swupdate_utility.sh | 130 | t2CountNotify | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 331 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 660 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 796 | t2_event_s | +| SYST_INFO_Healthcheck_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 929 | t2_event_s | +| SYST_INFO_Http302 | rdkfwupdater | src/rdkv_upgrade.c | 156 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_ImgFlashOK | rdkfwupdater | src/flash.c | 163 | flashT2CountNotify→t2_event_d | +| SYST_INFO_JSPPShutdown | entservices-monitor | plugin/Monitor.h | 963 | t2_event_d | +| SYST_INFO_lu_success ⚠️ | dcm-agent | uploadstblogs/src/event_manager.c | 135 | t2_count_notify→t2_event_d | +| SYST_INFO_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 517 | t2CountNotify | +| SYST_INFO_LUattempt ⚠️ | dcm-agent | uploadstblogs/src/retry_logic.c | 55 | t2_count_notify→t2_event_d | +| SYST_INFO_LUattempt ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 511 | t2CountNotify | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 1929 | t2_event_d | +| SYST_INFO_MaintnceIncmpl | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 2745 | t2_event_d | +| SYST_INFO_MemAvailable_split | sysint | lib/rdk/system_info_collector.sh | 70 | t2ValNotify | +| SYST_INFO_minidumpUpld | crashupload | c_sourcecode/src/upload/upload.c | 429 | t2CountNotify→t2_event_d | +| SYST_INFO_minidumpUpld | crashupload | runDumpUpload.sh | 1141 | t2CountNotify | +| SYST_INFO_minidumpUpld | crashupload | uploadDumps_TestCases.md | 1795 | t2CountNotify | +| SYST_INFO_mtls_xpki ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 100 | t2_count_notify→t2_event_d | +| SYST_INFO_mtls_xpki ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 355 | t2CountNotify | +| SYST_INFO_NewXactToken_success | authservice-cpc | authservice.cpp | 335 | t2_event_s | +| SYST_INFO_NewXactToken_success | authservice-cpc | authservice.cpp | 417 | t2_event_s | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkFwupdateMgr.c | 670 | t2CountNotify→t2_event_d | +| SYST_INFO_NoConsentFlash | rdkfwupdater | src/rdkv_main.c | 619 | t2CountNotify→t2_event_d | +| SYST_INFO_PartnerId | sysint | lib/rdk/getDeviceId.sh | 77 | t2ValNotify | +| SYST_INFO_PC_RF4CE | sysint | lib/rdk/core_shell.sh | 115 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | dcm-agent | uploadstblogs/src/strategies.c | 953 | t2_count_notify→t2_event_d | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 883 | t2CountNotify | +| SYST_INFO_PDRILogUpload ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 886 | t2CountNotify | +| SYST_INFO_PDRIUpgSuccess | rdkfwupdater | src/rdkv_upgrade.c | 629 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_ProvisioingSucc | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 737 | t2_event_s | +| SYST_INFO_PRXR_Ver_split | rdkfwupdater | src/json_process.c | 281 | t2ValNotify→t2_event_s | +| SYST_INFO_Redrecovery | sysint-cpc | lib/rdk/xconfImageCheck.sh | 388 | t2CountNotify | +| SYST_INFO_RedStateRecovery | rdkfwupdater | src/rdkv_upgrade.c | 1058 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_RedstateSet | rdkfwupdater | src/device_status_helper.c | 370 | t2CountNotify→t2_event_d | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 925 | t2_event_s | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1141 | t2_event_s | +| SYST_INFO_RTController_split | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1347 | t2_event_s | +| SYST_INFO_SAME_FWCTN | rdkfwupdater | src/chunk.c | 101 | t2CountNotify→t2_event_d | +| SYST_INFO_SigDump_split | sysint | lib/rdk/core_shell.sh | 152 | t2ValNotify | +| SYST_INFO_SOMT | entservices-softwareupdate | MaintenanceManager/MaintenanceManager.cpp | 477 | t2_event_d | +| SYST_INFO_SwapCached_split | sysint | lib/rdk/system_info_collector.sh | 80 | t2ValNotify | +| SYST_INFO_SwapFree_split | sysint | lib/rdk/system_info_collector.sh | 86 | t2ValNotify | +| SYST_INFO_SwapTotal_split | sysint | lib/rdk/system_info_collector.sh | 83 | t2ValNotify | +| SYST_INFO_swdlSameImg ⚠️ | rdkfwupdater | src/device_status_helper.c | 912 | t2CountNotify→t2_event_d | +| SYST_INFO_swdlSameImg ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 515 | t2CountNotify | +| SYST_INFO_swdlSameImg ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 566 | t2CountNotify | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | rdkfwupdater | src/device_status_helper.c | 905 | t2CountNotify→t2_event_d | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 519 | t2CountNotify | +| SYST_INFO_SwdlSameImg_Stndby ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 570 | t2CountNotify | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkFwupdateMgr.c | 1181 | t2CountNotify→t2_event_d | +| SYST_INFO_SWUpgrdChck | rdkfwupdater | src/rdkv_main.c | 1123 | t2CountNotify→t2_event_d | +| SYST_INFO_SYSBUILD | systemtimemgr | systimerfactory/rdkdefaulttimesync.cpp | 131 | t2CountNotify→t2_event_d | +| SYST_INFO_SYSBUILD | systemtimemgr | systimerfactory/rdkdefaulttimesync.cpp | 131 | t2CountNotify→t2_event_d | +| SYST_INFO_Thrtl_Enable | rdkfwupdater | src/rdkv_upgrade.c | 989 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_TLS_xconf | rdkfwupdater | src/rdkv_upgrade.c | 978 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_TVActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1229 | t2_event_s | +| SYST_INFO_TVActivated | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1269 | t2_event_s | +| SYST_INFO_v2_fetchCalled | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1177 | t2_event_s | +| SYST_INFO_v2FKPS_Good | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1191 | t2_event_s | +| SYST_INFO_v2FKPS_NoFetch | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1167 | t2_event_s | +| SYST_INFO_v2FKPS_provCalled | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1184 | t2_event_s | +| SYST_INFO_v2FKPSSuccess | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1195 | t2_event_s | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 144 | t2CountNotify | +| SYST_INFO_WIFIConn | sysint | lib/rdk/networkConnectionRecovery.sh | 155 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 514 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 563 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 581 | t2CountNotify | +| SYST_INFO_Xconf200 ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 630 | t2CountNotify | +| SYST_INFO_XCONFConnect ⚠️ | rdkfwupdater | src/rdkv_upgrade.c | 378 | Upgradet2CountNotify→t2_event_d | +| SYST_INFO_XCONFConnect ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 505 | t2CountNotify | +| SYST_INFO_XCONFConnect ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 572 | t2CountNotify | +| SYST_SWDL_Retry_split ⚠️ | sysint | lib/rdk/userInitiatedFWDnld.sh | 598 | t2ValNotify | +| SYST_SWDL_Retry_split ⚠️ | sysint-cpc | lib/rdk/userInitiatedFWDnld.sh | 649 | t2ValNotify | +| SYST_WARN_ClkNotSet | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 590 | t2_event_s | +| SYST_WARN_ClkNotSet | rdkservices-cpc | DeviceProvisioning/DeviceProvisioningImplementation.cpp | 1119 | t2_event_s | +| SYST_WARN_CompFail | crashupload | c_sourcecode/src/archive/archive.c | 414 | t2ValNotify→t2_event_s | +| SYST_WARN_CompFail | crashupload | runDumpUpload.sh | 1012 | t2CountNotify | +| SYST_WARN_CoreNP_accum | sysint | lib/rdk/core_shell.sh | 366 | t2ValNotify | +| SYST_WARN_dcm_curl28 | sysint | lib/rdk/xconfImageCheck.sh | 416 | t2CountNotify | +| SYST_WARN_GW100PERC_PACKETLOSS | sysint | lib/rdk/networkConnectionRecovery.sh | 249 | t2CountNotify | +| SYST_WARN_NoMinidump | crashupload | c_sourcecode/src/utils/lock_manager.c | 42 | t2CountNotify→t2_event_d | +| SYST_WARN_NoMinidump | crashupload | runDumpUpload.sh | 231 | t2CountNotify | +| SYST_WARN_UPGD_SKIP ⚠️ | rdkfwupdater | src/deviceutils/device_api.c | 921 | t2ValNotify→t2_event_s | +| SYST_WARN_UPGD_SKIP ⚠️ | sysint | lib/rdk/xconfImageCheck.sh | 158 | t2ValNotify | +| SYST_WARN_UPGD_SKIP ⚠️ | sysint-cpc | lib/rdk/xconfImageCheck.sh | 164 | t2ValNotify | +| TEST_EVENT_1 | telemetry | source/testApp/testCommonLibApi.c | 79 | t2_event_d | +| TEST_EVENT_2 | telemetry | source/testApp/testCommonLibApi.c | 81 | t2_event_s | +| TEST_lu_success ⚠️ | dcm-agent | uploadstblogs/src/path_handler.c | 532 | t2_count_notify→t2_event_d | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 619 | t2CountNotify | +| TEST_lu_success ⚠️ | sysint | lib/rdk/uploadSTBLogs.sh | 648 | t2CountNotify | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 290 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 542 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 290 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | reboot-manager | src/reboot_reason_classify.c | 542 | t2CountNotify→t2_event_d | +| Test_SWReset ⚠️ | sysint | lib/rdk/update_previous_reboot_info.sh | 201 | t2CountNotify | +| Test_SWReset ⚠️ | sysint-cpc | lib/rdk/update_previous_reboot_info.sh | 220 | t2CountNotify | +| TimeZone_split | sysint | lib/rdk/getTimeZone.sh | 69 | t2ValNotify | +| TR69HOSTIF_GET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 171 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 160 | t2CountNotify→t2_event_d | +| TR69HOSTIF_GET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 205 | t2ValNotify→t2_event_s | +| TR69HOSTIF_SET_1000_WITHIN_5MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 260 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_200_WITHIN_1MIN | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 249 | t2CountNotify→t2_event_d | +| TR69HOSTIF_SET_TIMEOUT_PARAM | tr69hostif | src/hostif/handlers/src/hostIf_msgHandler.cpp | 291 | t2ValNotify→t2_event_s | +| vmstats_split | sysint | lib/rdk/vm-statistics.sh | 32 | t2ValNotify | +| WIFI_ERROR_PSM_GetRecordFail | telemetry | source/testApp/testCommonLibApi.c | 69 | t2_event_s | +| WIFI_INFO_MvdToPrvSSID | lostandfound-cpc | src/lost_and_found.c | 1491 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_Lnf463 | lostandfound-cpc | src/lost_and_found.c | 854 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_461 | lostandfound-cpc | src/lost_and_found.c | 852 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_464 | lostandfound-cpc | src/lost_and_found.c | 856 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_lnf_466 | lostandfound-cpc | src/lost_and_found.c | 858 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_cred_xPKI | lostandfound-cpc | src/lost_and_found.c | 1440 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_lfat_XPKI | lostandfound-cpc | src/lost_and_found.c | 1376 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_LnF_XPKI_EAP-TLS | lostandfound-cpc | src/lost_and_found.c | 1313 | laf_telemetry_event_d→t2_event_d | +| WIFIV_ERR_reassoc | sysint | lib/rdk/networkConnectionRecovery.sh | 183 | t2CountNotify | +| WIFIV_INFO_HAL_RX_Bitrate | wifimetrics-cpc | plugin/src/StaRateInfoReader.cpp | 75 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_HAL_TX_Bitrate | wifimetrics-cpc | plugin/src/StaRateInfoReader.cpp | 74 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_HAL_WiFiChannelUtilization_split | wifimetrics-cpc | plugin/src/ChannelUtilizationReader.cpp | 147 | telemetry_event_s→t2_event_s | +| WIFIV_INFO_LnF_cred_xPKI | lostandfound-cpc | src/lost_and_found.c | 1463 | laf_telemetry_event_d→t2_event_d | +| WIFIV_INFO_LnF_lfat_XPKI | lostandfound-cpc | src/lost_and_found.c | 1399 | laf_telemetry_event_d→t2_event_d | +| WIFIV_INFO_LnfConnected | lostandfound-cpc | src/lost_and_found.c | 1386 | laf_telemetry_event_d→t2_event_d | +| WIFIV_SET_BGSCAN_PARAMETERS | wifioptimizer-cpc | src/main.c | 253 | telemetry_event_s→t2_event_s | +| WIFIV_WARN_LnF_xPKI | lostandfound-cpc | src/lost_and_found.c | 1329 | laf_telemetry_event_d→t2_event_d | +| WIFIV_WARN_PL_ | sysint | lib/rdk/networkConnectionRecovery.sh | 271 | t2CountNotify | +| WIFIV_WARN_PL_10PERC | sysint | lib/rdk/networkConnectionRecovery.sh | 280 | t2CountNotify | +| WPE_ERR_rtrmfplayer_crash | sysint | lib/rdk/core_shell.sh | 118 | t2CountNotify | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 74 | t2_event_s | +| WPE_INFO_MigStatus_split | entservices-migration | plugin/MigrationImplementation.cpp | 114 | t2_event_s | +| xconf_couldnt_resolve | rdkfwupdater | src/rdkv_upgrade.c | 591 | Upgradet2CountNotify→t2_event_d | +| Xi_wifiMAC_split | sysint | lib/rdk/NM_Dispatcher.sh | 120 | t2ValNotify | +| xr_fwdnld_split | rdkfwupdater | src/rdkFwupdateMgr.c | 576 | t2ValNotify→t2_event_s | +| xr_fwdnld_split | rdkfwupdater | src/rdkv_main.c | 526 | t2ValNotify→t2_event_s | + +## Dynamic Markers +Markers containing shell variables (`$var`, `${var}`) that resolve at runtime. + +| Marker Pattern | Component | File Path | Line | API | +|----------------|-----------|-----------|------|-----| +| SYST_ERR_$source | sysint | lib/rdk/rebootNow.sh | 143 | t2CountNotify | +| SYST_ERR_$source_reboot | sysint | lib/rdk/rebootNow.sh | 164 | t2CountNotify | +| SYST_ERR_CrashSig$2 | sysint | lib/rdk/core_shell.sh | 153 | t2CountNotify | +| WIFIV_INFO_NO${version}ROUTE | sysint | lib/rdk/networkConnectionRecovery.sh | 258 | t2CountNotify | + +## Duplicate Markers +⚠️ **CDL_INFO_inprogressExit** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:755 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:806 (`t2CountNotify`) + +⚠️ **CDLrdkportal_split** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:377 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:178 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:179 (`t2ValNotify`) + +⚠️ **certerr_split** - Found in 8 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:213 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:271 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:213 (`t2ValNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:271 (`t2ValNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:267 (`t2ValNotify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:458 (`t2_val_notify→t2_event_s`) +- rdkfwupdater: src/rdkv_upgrade.c:284 (`Upgradet2ValNotify→t2_event_s`) +- rdm: scripts/downloadUtils.sh:452 (`t2ValNotify`) +- rdm-agent: scripts/downloadUtils.sh:417 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:307 (`t2ValNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:408 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:353 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:435 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:484 (`t2ValNotify`) + +⚠️ **CurlRet_split** - Found in 3 components: +- rdkfwupdater: src/rdkv_main.c:1166 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:418 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:348 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:442 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:491 (`t2ValNotify`) + +⚠️ **HDMI_DeviceInfo_split** - Found in 2 components: +- entservices-hdmicecsink: plugin/HdmiCecSinkImplementation.cpp:295 (`t2_event_s`) +- entservices-hdmicecsource: plugin/HdmiCecSourceImplementation.cpp:215 (`t2_event_s`) + +⚠️ **LUCurlErr_split** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:214 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:342 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:431 (`t2_val_notify→t2_event_s`) +- dcm-agent: uploadstblogs/src/path_handler.c:518 (`t2_val_notify→t2_event_s`) +- sysint: lib/rdk/uploadSTBLogs.sh:338 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:614 (`t2ValNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:645 (`t2ValNotify`) + +⚠️ **NF_ERR_rdm_filenotfound_extraction** - Found in 2 components: +- rdm: scripts/downloadUtils.sh:653 (`t2CountNotify`) +- rdm-agent: scripts/downloadUtils.sh:622 (`t2CountNotify`) + +⚠️ **NF_INFO_rdm_success** - Found in 2 components: +- rdm: scripts/packagerMgr.sh:333 (`t2CountNotify`) +- rdm-agent: src/rdm_downloadmgr.c:319 (`t2ValNotify→t2_event_s`) +- rdm-agent: src/rdm_downloadmgr.c:335 (`t2ValNotify→t2_event_s`) + +⚠️ **PDRI_Version_split** - Found in 3 components: +- rdkfwupdater: src/deviceutils/device_api.c:163 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:458 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:525 (`t2ValNotify`) + +⚠️ **RCU_FWver_split** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:395 (`t2ValNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:541 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:422 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:608 (`t2ValNotify`) + +⚠️ **RDM_ERR_rdm_retry_fail** - Found in 2 components: +- rdm: scripts/downloadUtils.sh:416 (`t2CountNotify`) +- rdm-agent: scripts/downloadUtils.sh:378 (`t2CountNotify`) + +⚠️ **RDM_ERR_rsa_signature_failed** - Found in 2 components: +- rdm: scripts/opensslVerifier.sh:121 (`t2CountNotify`) +- rdm: scripts/downloadMgr.sh:437 (`t2CountNotify`) +- rdm-agent: src/rdm_downloadmgr.c:308 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_downloadmgr.c:324 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_packagemgr.c:232 (`t2CountNotify→t2_event_d`) + +⚠️ **RDM_INFO_rsa_valid_signature** - Found in 2 components: +- rdm: scripts/packagerMgr.sh:263 (`t2CountNotify`) +- rdm-agent: src/rdm_openssl.c:981 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_downloadutils.c:629 (`t2CountNotify→t2_event_d`) +- rdm-agent: src/rdm_packagemgr.c:63 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_ERROR_S3CoreUpload_Failed** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:281 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:281 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:275 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_INFO_CodBPASS** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:825 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:538 (`t2CountNotify`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:620 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:589 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:671 (`t2CountNotify`) + +⚠️ **SYS_INFO_S3CoreUploaded** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:289 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:289 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:297 (`t2CountNotify→t2_event_d`) + +⚠️ **SYS_INFO_xPKI_Static_Fallback** - Found in 2 components: +- sslcerts-cpc: xupnpcerts/idm_certs.sh:65 (`t2ValNotify`) +- sslcerts-cpc: xupnpcerts/hrot_idm_certs.sh:101 (`t2ValNotify`) +- sslcerts-cpc: xupnpcerts/dpcg.sh:36 (`t2ValNotify`) +- sysint-cpc: lib/rdk/exec_curl_mtls.sh:73 (`t2ValNotify`) +- sysint-cpc: lib/rdk/mtlsUtils.sh:78 (`t2ValNotify`) + +⚠️ **SYST_ERR_10Times_reboot** - Found in 3 components: +- reboot-manager: src/reboot_reason_classify.c:261 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:261 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/update_previous_reboot_info.sh:127 (`t2CountNotify`) +- sysint: lib/rdk/update_previous_reboot_info.sh:140 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:152 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:165 (`t2CountNotify`) + +⚠️ **SYST_ERR_CDLFail** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:594 (`Upgradet2CountNotify→t2_event_d`) +- rdkfwupdater: src/rdkv_upgrade.c:646 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:661 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:712 (`t2CountNotify`) + +⚠️ **SYST_ERR_Curl28** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:216 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:344 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:433 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:520 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:370 (`t2CountNotify`) + +⚠️ **SYST_ERR_FW_RFC_disabled** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:694 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:745 (`t2CountNotify`) + +⚠️ **SYST_ERR_FWdnldFail** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:401 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:440 (`t2ValNotify`) + +⚠️ **SYST_ERR_LogUpload_Failed** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:166 (`t2_count_notify→t2_event_d`) +- dcm-agent: uploadstblogs/src/path_handler.c:552 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:657 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:780 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:871 (`t2CountNotify`) + +⚠️ **SYST_ERR_PDRI_VFail** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:453 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:520 (`t2CountNotify`) + +⚠️ **SYST_ERR_ProcessCrash** - Found in 2 components: +- crashupload: c_sourcecode/src/scanner/scanner.c:369 (`t2CountNotify→t2_event_d`) +- crashupload: runDumpUpload.sh:761 (`t2CountNotify`) +- crashupload: uploadDumps_TestCases.md:1590 (`t2CountNotify`) +- sysint: lib/rdk/core_shell.sh:81 (`t2CountNotify`) + +⚠️ **SYST_ERR_Xconf28** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:512 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:561 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:579 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:628 (`t2CountNotify`) + +⚠️ **SYST_INFO_cb_xconf** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:733 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:591 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:667 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:658 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:734 (`t2CountNotify`) + +⚠️ **SYST_INFO_CDLSuccess** - Found in 3 components: +- rdkfwupdater: src/flash.c:137 (`flashT2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:664 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:715 (`t2CountNotify`) + +⚠️ **SYST_INFO_CURL6** - Found in 2 components: +- cpg-utils-cpc: uploadDumpsToS3.sh:283 (`t2CountNotify`) +- cpg-utils-cpc: uploadDumpsToS3.sh:283 (`t2CountNotify`) +- crashupload: c_sourcecode/src/upload/upload.c:278 (`t2CountNotify→t2_event_d`) + +⚠️ **SYST_INFO_FWCOMPLETE** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:605 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:423 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:474 (`t2CountNotify`) + +⚠️ **SYST_INFO_FWUpgrade_Exit** - Found in 2 components: +- rdkfwupdater: src/device_status_helper.c:80 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/swupdate_utility.sh:130 (`t2CountNotify`) + +⚠️ **SYST_INFO_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/event_manager.c:135 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:517 (`t2CountNotify`) + +⚠️ **SYST_INFO_LUattempt** - Found in 2 components: +- dcm-agent: uploadstblogs/src/retry_logic.c:55 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:511 (`t2CountNotify`) + +⚠️ **SYST_INFO_mtls_xpki** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:100 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:355 (`t2CountNotify`) + +⚠️ **SYST_INFO_PDRILogUpload** - Found in 2 components: +- dcm-agent: uploadstblogs/src/strategies.c:953 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:883 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:886 (`t2CountNotify`) + +⚠️ **SYST_INFO_swdlSameImg** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:912 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:515 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:566 (`t2CountNotify`) + +⚠️ **SYST_INFO_SwdlSameImg_Stndby** - Found in 3 components: +- rdkfwupdater: src/device_status_helper.c:905 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/userInitiatedFWDnld.sh:519 (`t2CountNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:570 (`t2CountNotify`) + +⚠️ **SYST_INFO_Xconf200** - Found in 2 components: +- sysint: lib/rdk/xconfImageCheck.sh:514 (`t2CountNotify`) +- sysint: lib/rdk/xconfImageCheck.sh:563 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:581 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:630 (`t2CountNotify`) + +⚠️ **SYST_INFO_XCONFConnect** - Found in 3 components: +- rdkfwupdater: src/rdkv_upgrade.c:378 (`Upgradet2CountNotify→t2_event_d`) +- sysint: lib/rdk/xconfImageCheck.sh:505 (`t2CountNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:572 (`t2CountNotify`) + +⚠️ **SYST_SWDL_Retry_split** - Found in 2 components: +- sysint: lib/rdk/userInitiatedFWDnld.sh:598 (`t2ValNotify`) +- sysint-cpc: lib/rdk/userInitiatedFWDnld.sh:649 (`t2ValNotify`) + +⚠️ **SYST_WARN_UPGD_SKIP** - Found in 3 components: +- rdkfwupdater: src/deviceutils/device_api.c:921 (`t2ValNotify→t2_event_s`) +- sysint: lib/rdk/xconfImageCheck.sh:158 (`t2ValNotify`) +- sysint-cpc: lib/rdk/xconfImageCheck.sh:164 (`t2ValNotify`) + +⚠️ **TEST_lu_success** - Found in 2 components: +- dcm-agent: uploadstblogs/src/path_handler.c:532 (`t2_count_notify→t2_event_d`) +- sysint: lib/rdk/uploadSTBLogs.sh:619 (`t2CountNotify`) +- sysint: lib/rdk/uploadSTBLogs.sh:648 (`t2CountNotify`) + +⚠️ **Test_SWReset** - Found in 3 components: +- reboot-manager: src/reboot_reason_classify.c:290 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:542 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:290 (`t2CountNotify→t2_event_d`) +- reboot-manager: src/reboot_reason_classify.c:542 (`t2CountNotify→t2_event_d`) +- sysint: lib/rdk/update_previous_reboot_info.sh:201 (`t2CountNotify`) +- sysint-cpc: lib/rdk/update_previous_reboot_info.sh:220 (`t2CountNotify`) diff --git a/tools/marker_discovery/README.md b/tools/marker_discovery/README.md new file mode 100755 index 00000000..f1072208 --- /dev/null +++ b/tools/marker_discovery/README.md @@ -0,0 +1,195 @@ +# Marker Discovery Tool + +A command-line utility that scans repositories in GitHub organizations to identify all T2 telemetry marker instrumentations and generates a markdown inventory report. By default scans the 4 RDK organizations (`rdkcentral`, `rdk-e`, `rdk-common`, `rdk-gdcs`). + +## Features + +- **C/C++ scanning** — Uses [tree-sitter](https://tree-sitter.github.io/) to parse `.c`, `.cpp`, and `.h` files, extracting markers from `t2_event_s()`, `t2_event_d()`, and `t2_event_f()` calls +- **Wrapper resolution** — Detects functions that wrap `t2_event_*` calls and traces call sites to recover the actual marker names +- **Script scanning** — Regex-based extraction of `t2ValNotify` and `t2CountNotify` calls from shell scripts and other text files +- **Dynamic marker tracking** — Markers containing shell variables (`$var`, `${var}`) are identified and listed separately; pure positional args like `$1` are resolved when possible +- **Patch scanning** — Detects marker calls in `.patch` files (added lines only) +- **Duplicate detection** — Flags markers that appear across multiple components +- **Version manifest input** — Accept a `versions.txt` file with exact commit SHAs for reproducible scans. Includes all GitHub repos regardless of org. Supports HTTPS and SSH GitHub URLs. +- **Single attempt cloning** — No branch fallback retries; 5-minute timeout per clone + +## Prerequisites + +- Python 3.10+ +- Git (for cloning repositories) +- GitHub credentials: + - **API calls**: `~/.netrc` with a GitHub PAT: + ``` + machine api.github.com + login + password + ``` + - **Git clones**: `~/.gitconfig` per-org credential helpers (supports multiple accounts): + ```ini + [credential "https://github.com"] + helper = "!f() { echo username=DEFAULT_USER; echo password=DEFAULT_TOKEN; }; f" + + [credential "https://github.com/rdkcentral"] + helper = "!f() { echo username=OTHER_USER; echo password=OTHER_TOKEN; }; f" + ``` + Git uses the longest matching URL prefix, so the rdkcentral block overrides the default for that org. All other orgs use the default credential. + +## Installation + +Dependencies are **auto-installed** on first run if missing. To install manually: + +```bash +pip install -r tools/marker_discovery/requirements.txt +``` + +Dependencies: +- `tree-sitter>=0.21.0` +- `tree-sitter-c>=0.21.0` +- `requests>=2.31.0` + +## Usage + +```bash +python3 -m tools.marker_discovery [OPTIONS] +``` + +### Options + +| Option | Default | Description | +|--------|---------|-------------| +| `--branch` | `main` | Git branch or tag to scan (ignored with `--input-file`) | +| `--org` | All 4 RDK orgs | GitHub organization(s) to scan. Example: `--org rdkcentral rdk-e` | +| `--repo` | None | One or more `org/repo` pairs to scan. Example: `--repo rdkcentral/telemetry rdk-e/rdkservices-cpc` | +| `--input-file` | None | Version manifest file (`versions.txt` format) | +| `--output` | stdout | Output file path for the markdown report | +| `--verbose`, `-v` | off | Enable debug logging | + +### Examples + +```bash +# Scan all 4 RDK orgs on main branch, print report to stdout +python3 -m tools.marker_discovery + +# Scan specific orgs on a release branch, save to file +python3 -m tools.marker_discovery \ + --org rdkcentral rdk-e \ + --branch release-1.0 \ + --output markers_report.md \ + --verbose + +# Scan specific repos (org/repo format) +python3 -m tools.marker_discovery \ + --repo rdkcentral/telemetry rdk-e/rdkservices-cpc \ + --output markers_report.md + +# Scan from a version manifest file (exact commits) +python3 -m tools.marker_discovery \ + --input-file versions.txt \ + --output markers_report.md +``` + +## How It Works + +### Scanning Modes + +**Default mode** (no `--input-file`): +- Lists all repos in each org via GitHub API +- Shallow clones each repo on the target branch (single attempt, 5-minute timeout) +- Scans all cloned repos + +**Repo mode** (`--repo org/repo`): +- Clones one or more specific repos by `org/repo` pairs +- Uses the `--branch` flag (default: `main`), single attempt + +**Input-file mode** (`--input-file versions.txt`): +- Parses a version manifest listing GitHub repos with commit SHAs +- Clones at exact commit SHA (single attempt, no fallback to branch) +- Includes ALL GitHub repos in the file regardless of org; skips non-GitHub URLs + +### Version Manifest Format + +The `--input-file` accepts a `versions.txt` with one repo per line: + +``` +https://github.com/rdkcentral/telemetry@develop : a1b2c3d4e5f6... +https://github.com/rdkcentral/rbus.git@develop : 4a25e92112e8... +b'https://github.com/rdkcentral/meta-rdk-iot'@sha : sha +ssh://github.com/rdk-e/rdkservices-cpc@ : 1dff01bd7714... +b'ssh://git@github.com/rdk-e/meta-rdk-tools'@sha : sha +``` + +Supported URL schemes: `https://`, `http://`, `ssh://`, `ssh://git@`. SSH URLs are automatically converted to HTTPS for cloning. Non-GitHub URLs (gerrit, kernel.org, tarballs) and `md5sum` entries are skipped. + +### Three-Pass C/C++ Scanning + +1. **Direct calls** — Finds `t2_event_s("MARKER", ...)`, `t2_event_d(...)`, `t2_event_f(...)` where the first argument is a string literal +2. **Wrapper detection** — Identifies functions that call `t2_event_*` with a variable first argument and maps it to a function parameter +3. **Wrapper resolution** — Finds call sites of detected wrappers and extracts the string literal passed at the marker parameter position + +Example: +```c +// Wrapper definition — detected in Pass 2 +void log_telemetry(const char *marker, const char *value) { + t2_event_s(marker, value); +} + +// Call site — resolved in Pass 3, marker recorded as "BOOT_TIME" +log_telemetry("BOOT_TIME", boot_val); +``` + +In the report, resolved wrappers show the call chain: `log_telemetry→t2_event_s`. + +### Script Scanning + +Scans all non-C/non-binary files for: +- `t2ValNotify "MARKER_NAME" ...` +- `t2CountNotify "MARKER_NAME" ...` + +Markers containing shell variables (e.g. `SYST_ERR_$source_reboot`, `${version}`) are classified as **dynamic** and listed in a separate report section. + +For pure positional args like `$1`, the tool attempts resolution by finding the enclosing shell function and tracing its call sites within the same file. + +### Patch Scanning + +Scans `.patch` files for added lines (`+` prefix) containing any of the five marker API patterns. These appear in the report with a `(patch)` component suffix. + +## Report Format + +The generated markdown report includes: + +1. **Header** — Branch, organizations, generation timestamp +2. **Summary** — Total markers, static/dynamic counts, components scanned, unresolved count, duplicate count +3. **Unique Marker Inventory** — One row per unique marker name with the list of components it appears in +4. **Detailed Marker Inventory** — Table of all static markers sorted by name, with component, file path, line number, and API +5. **Dynamic Markers** — Separate table for markers containing shell variables (if any) +6. **Duplicate Markers** — Markers appearing in multiple components, flagged with ⚠️ (if any) +7. **Unresolved Components** — Components from the input file that could not be cloned (if any) + +## Authentication + +**GitHub API calls** use `~/.netrc` via a custom `_NetrcAuth` class. Credentials are read per-request and never stored in memory. The `.netrc` file is used as-is regardless of file permissions. Subdomain matching (`api.github.com` → `github.com`) is handled automatically. + +**Git clone operations** use `~/.gitconfig` credential helpers. Per-org helpers allow using different GitHub accounts for different organizations (e.g., one PAT for rdkcentral, another for rdk-e). Git uses longest-prefix URL matching, so a default `[credential "https://github.com"]` block covers all orgs, while specific blocks like `[credential "https://github.com/rdkcentral"]` override for that org. + +## Directory Structure + +``` +tools/marker_discovery/ +├── __init__.py # MarkerRecord dataclass +├── __main__.py # Entry point +├── marker_scanner.py # CLI arguments and orchestration +├── github_client.py # GitHub API client and repo cloning +├── component_file_parser.py # Version manifest (versions.txt) parser +├── code_parser.py # tree-sitter C/C++ scanner +├── script_parser.py # Shell script scanner +├── patch_parser.py # Patch file scanner +├── report_generator.py # Markdown report output +├── requirements.txt # Python dependencies +└── tests/ # Unit tests (pytest) +``` + +## Running Tests + +```bash +python3 -m pytest tools/marker_discovery/tests/ -v +``` diff --git a/tools/marker_discovery/__init__.py b/tools/marker_discovery/__init__.py new file mode 100755 index 00000000..783d16c5 --- /dev/null +++ b/tools/marker_discovery/__init__.py @@ -0,0 +1,12 @@ +from dataclasses import dataclass + + +@dataclass +class MarkerRecord: + """A single discovered telemetry marker.""" + marker_name: str + component: str + file_path: str + line: int + api: str + source_type: str # "source" | "script" | "patch" diff --git a/tools/marker_discovery/__main__.py b/tools/marker_discovery/__main__.py new file mode 100755 index 00000000..6e6b4cf4 --- /dev/null +++ b/tools/marker_discovery/__main__.py @@ -0,0 +1,27 @@ +"""Allow running as: python3 -m tools.marker_discovery [--org ORG] [--branch BRANCH] [--output FILE]""" + +import importlib +import subprocess +import sys + +_REQUIRED = ["tree_sitter", "tree_sitter_c", "requests"] + + +def _ensure_deps(): + missing = [] + for mod in _REQUIRED: + try: + importlib.import_module(mod) + except ImportError: + missing.append(mod) + if missing: + req = str(__import__("pathlib").Path(__file__).parent / "requirements.txt") + print(f"Installing missing dependencies: {', '.join(missing)}", file=sys.stderr) + subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", req]) + + +_ensure_deps() + +from .marker_scanner import main + +sys.exit(main()) diff --git a/tools/marker_discovery/code_parser.py b/tools/marker_discovery/code_parser.py new file mode 100755 index 00000000..9b190104 --- /dev/null +++ b/tools/marker_discovery/code_parser.py @@ -0,0 +1,331 @@ +"""C/C++ source code parser using tree-sitter for t2_event_* marker extraction.""" + +import logging +import os + +import tree_sitter_c as tsc +from tree_sitter import Language, Parser + +from . import MarkerRecord + +logger = logging.getLogger(__name__) + +C_LANGUAGE = Language(tsc.language()) + +T2_DIRECT_APIS = {"t2_event_s", "t2_event_d", "t2_event_f"} +C_EXTENSIONS = {".c", ".cpp", ".h"} + +# Directory names to skip during scanning +SKIP_DIRS = {"test", "tests", ".git"} + + +def _create_parser(): + """Create a tree-sitter parser with C grammar.""" + parser = Parser(C_LANGUAGE) + return parser + + +def _walk_tree(node): + """Recursively yield all nodes in the AST.""" + yield node + for child in node.children: + yield from _walk_tree(child) + + +def _get_function_name(call_node): + """Extract the function name from a call_expression node.""" + func = call_node.child_by_field_name("function") + if func is None: + return None + if func.type == "identifier": + return func.text.decode("utf-8") + if func.type == "field_expression": + field = func.child_by_field_name("field") + if field: + return field.text.decode("utf-8") + return None + + +def _get_call_arguments(call_node): + """Extract argument nodes from a call_expression.""" + args_node = call_node.child_by_field_name("arguments") + if args_node is None: + return [] + return [child for child in args_node.named_children] + + +def _extract_string_literal(node): + """Extract the string content from a string_literal node, stripping quotes.""" + if node.type == "string_literal": + text = node.text.decode("utf-8") + # Strip surrounding quotes + if text.startswith('"') and text.endswith('"'): + return text[1:-1] + return None + + +def _find_c_files(repo_path): + """Recursively find all .c, .cpp, .h files in a directory.""" + c_files = [] + for root, dirs, files in os.walk(repo_path): + # Skip test and .git directories + dirs[:] = [d for d in dirs if d.lower() not in SKIP_DIRS] + for fname in files: + ext = os.path.splitext(fname)[1].lower() + if ext in C_EXTENSIONS: + c_files.append(os.path.join(root, fname)) + return c_files + + +def _parse_file(parser, file_path): + """Parse a C/C++ file and return the tree, or None on error.""" + try: + with open(file_path, "rb") as f: + source = f.read() + tree = parser.parse(source) + return tree + except Exception as e: + logger.warning("Failed to parse %s: %s", file_path, e) + return None + + +def scan_direct_calls(repo_path, repo_name): + """Scan a repo for direct t2_event_s/d/f calls with string literal markers. + + Returns list of MarkerRecord. + """ + parser = _create_parser() + markers = [] + c_files = _find_c_files(repo_path) + + for file_path in c_files: + tree = _parse_file(parser, file_path) + if tree is None: + continue + + rel_path = os.path.relpath(file_path, repo_path) + + for node in _walk_tree(tree.root_node): + if node.type != "call_expression": + continue + + func_name = _get_function_name(node) + if func_name not in T2_DIRECT_APIS: + continue + + args = _get_call_arguments(node) + if not args: + continue + + marker_name = _extract_string_literal(args[0]) + if marker_name is None: + continue + + line = node.start_point[0] + 1 # tree-sitter is 0-indexed + markers.append(MarkerRecord( + marker_name=marker_name, + component=repo_name, + file_path=rel_path, + line=line, + api=func_name, + source_type="source", + )) + + logger.info("Found %d direct markers in %s", len(markers), repo_name) + return markers + + +def _get_function_params(func_def_node): + """Extract parameter names from a function_definition node. + + Returns list of parameter name strings in order. + """ + declarator = func_def_node.child_by_field_name("declarator") + if declarator is None: + return [] + + # Navigate to the parameter list — could be nested in pointer_declarator etc. + params_node = None + for node in _walk_tree(declarator): + if node.type == "parameter_list": + params_node = node + break + + if params_node is None: + return [] + + param_names = [] + for child in params_node.named_children: + if child.type == "parameter_declaration": + pdecl = child.child_by_field_name("declarator") + if pdecl: + # Could be a plain identifier or a pointer_declarator + if pdecl.type == "identifier": + param_names.append(pdecl.text.decode("utf-8")) + elif pdecl.type == "pointer_declarator": + for n in _walk_tree(pdecl): + if n.type == "identifier": + param_names.append(n.text.decode("utf-8")) + break + else: + # Try to find any identifier descendant + for n in _walk_tree(pdecl): + if n.type == "identifier": + param_names.append(n.text.decode("utf-8")) + break + return param_names + + +def detect_wrappers(repo_path): + """Detect wrapper functions that call t2_event_* with a variable (not literal) first arg. + + Returns list of dicts: + {'wrapper_name': str, 'marker_param_index': int, 'api': str, 'file': str} + """ + parser = _create_parser() + wrappers = [] + c_files = _find_c_files(repo_path) + + for file_path in c_files: + tree = _parse_file(parser, file_path) + if tree is None: + continue + + for node in _walk_tree(tree.root_node): + if node.type != "function_definition": + continue + + # Get function name + declarator = node.child_by_field_name("declarator") + if declarator is None: + continue + + func_name = None + for n in _walk_tree(declarator): + if n.type == "identifier": + func_name = n.text.decode("utf-8") + break + + if func_name is None: + continue + + # Skip direct API functions — they are not wrappers + if func_name in T2_DIRECT_APIS: + continue + + # Get parameter names + param_names = _get_function_params(node) + if not param_names: + continue + + # Search body for t2_event_* calls with variable first arg + body = node.child_by_field_name("body") + if body is None: + continue + + for body_node in _walk_tree(body): + if body_node.type != "call_expression": + continue + + callee = _get_function_name(body_node) + if callee not in T2_DIRECT_APIS: + continue + + args = _get_call_arguments(body_node) + if not args: + continue + + first_arg = args[0] + # If first arg is an identifier (variable), this is a wrapper + if first_arg.type == "identifier": + var_name = first_arg.text.decode("utf-8") + # Find which parameter position this variable corresponds to + if var_name in param_names: + param_index = param_names.index(var_name) + wrappers.append({ + "wrapper_name": func_name, + "marker_param_index": param_index, + "api": callee, + "file": file_path, + }) + logger.debug("Detected wrapper: %s (param %d) → %s in %s", + func_name, param_index, callee, file_path) + + logger.info("Detected %d wrapper functions in repo", len(wrappers)) + return wrappers + + +def resolve_wrapper_calls(repo_path, repo_name, wrappers): + """Find call sites of detected wrappers and extract marker names. + + Returns list of MarkerRecord. + """ + if not wrappers: + return [] + + parser = _create_parser() + markers = [] + c_files = _find_c_files(repo_path) + + # Build lookup: wrapper_name → (param_index, api) + wrapper_lookup = {} + for w in wrappers: + wrapper_lookup[w["wrapper_name"]] = (w["marker_param_index"], w["api"]) + + for file_path in c_files: + tree = _parse_file(parser, file_path) + if tree is None: + continue + + rel_path = os.path.relpath(file_path, repo_path) + + for node in _walk_tree(tree.root_node): + if node.type != "call_expression": + continue + + func_name = _get_function_name(node) + if func_name not in wrapper_lookup: + continue + + param_index, underlying_api = wrapper_lookup[func_name] + args = _get_call_arguments(node) + if len(args) <= param_index: + continue + + marker_name = _extract_string_literal(args[param_index]) + if marker_name is None: + continue + + line = node.start_point[0] + 1 + markers.append(MarkerRecord( + marker_name=marker_name, + component=repo_name, + file_path=rel_path, + line=line, + api=f"{func_name}→{underlying_api}", + source_type="source", + )) + + logger.info("Resolved %d wrapper call markers in %s", len(markers), repo_name) + return markers + + +def scan_repo(repo_path, repo_name): + """Full scan of a repo: direct calls + wrapper resolution. + + Returns list of MarkerRecord. + """ + # Pass 1: Direct calls + markers = scan_direct_calls(repo_path, repo_name) + + # Pass 2: Detect wrappers + wrappers = detect_wrappers(repo_path) + + # Pass 3: Resolve wrapper call sites + wrapper_markers = resolve_wrapper_calls(repo_path, repo_name, wrappers) + markers.extend(wrapper_markers) + + logger.info("Total markers in %s: %d (direct) + %d (wrapper) = %d", + repo_name, len(markers) - len(wrapper_markers), + len(wrapper_markers), len(markers)) + return markers \ No newline at end of file diff --git a/tools/marker_discovery/component_file_parser.py b/tools/marker_discovery/component_file_parser.py new file mode 100755 index 00000000..b63dd01d --- /dev/null +++ b/tools/marker_discovery/component_file_parser.py @@ -0,0 +1,96 @@ +"""Parser for component version input files. + +Parses version manifest files that list repo URLs, branches, and commit SHAs. +Expected format (one per line): + https://github.com/rdkcentral/telemetry@develop : a1b2c3d4... + b'https://github.com/rdkcentral/rbus.git'@develop : e5f6a7b8... + ssh://github.com/rdk-e/rdkservices-cpc@ : 1dff01bd... + b'ssh://git@github.com/rdk-e/meta-rdk-tools'@sha : sha + +All GitHub repos are included regardless of org. +Non-GitHub URLs (gerrit, kernel.org, tarballs, etc.) are skipped. +SSH URLs are converted to HTTPS clone URLs for compatibility with credential helpers. +""" + +import logging +import re + +logger = logging.getLogger(__name__) + +# Matches GitHub URLs in various formats found in version files: +# https://github.com/org/repo@ref : sha +# https://github.com/org/repo.git@ref : sha +# b'https://github.com/org/repo'@sha : sha +# ssh://github.com/org/repo@ref : sha +# ssh://git@github.com/org/repo.git@ : sha +# b'ssh://git@github.com/org/repo'@sha : sha +_GITHUB_LINE_PATTERN = re.compile( + r"^(?:b')?" # optional b' prefix + r"(?:" + r"https?://github\.com/" # HTTPS URL + r"|" + r"ssh://(?:git@)?github\.com/" # SSH URL (with optional git@ user) + r")" + r"([^/]+)/" # org + r"([^@'.\s]+)" # repo name + r"(?:\.git)?" # optional .git suffix + r"'?" # optional closing quote + r"@(\S*)" # @ref (branch/tag/sha, may be empty) + r"\s*:\s*" # separator + r"(\S+)" # commit SHA or checksum +) + + +def parse_component_file(file_path): + """Parse a version manifest file and return list of component entries. + + Includes all GitHub repos regardless of org. + + Args: + file_path: Path to the versions file. + + Returns: + List of dicts: { + 'name': str, # repo name + 'org': str, # GitHub org + 'commit': str, # exact commit SHA + 'branch': str, # branch/ref from the file (may be empty) + 'url': str, # clone URL + } + """ + + components = [] + skipped = 0 + + with open(file_path, 'r') as f: + for line in f: + line = line.strip() + if not line: + continue + + match = _GITHUB_LINE_PATTERN.match(line) + if not match: + skipped += 1 + continue + + org = match.group(1) + repo = match.group(2) + ref = match.group(3) + commit = match.group(4) + + # Skip entries that are tarball downloads (sha is md5sum, not a commit) + if commit.startswith("md5sum"): + skipped += 1 + continue + + components.append({ + 'name': repo, + 'org': org, + 'commit': commit, + 'branch': ref if ref else '', + 'url': f"https://github.com/{org}/{repo}.git", + }) + + logger.info("Parsed %d components from %s (%d non-GitHub/non-RDK lines skipped)", + len(components), file_path, skipped) + return components diff --git a/tools/marker_discovery/github_client.py b/tools/marker_discovery/github_client.py new file mode 100755 index 00000000..5ad80c40 --- /dev/null +++ b/tools/marker_discovery/github_client.py @@ -0,0 +1,460 @@ +"""GitHub API client for repo enumeration, branch checking, and cloning.""" + +import logging +import os +import shutil +import subprocess +import tempfile +import time + +import requests +from requests.auth import AuthBase + +logger = logging.getLogger(__name__) + +GITHUB_API = "https://api.github.com" + + +class _NetrcAuth(AuthBase): + """requests-compatible auth that reads ~/.netrc on each request. + + Works around Python's netrc module rejecting files with open permissions. + Credentials are never stored — they are read from disk per-request and + injected directly into the Authorization header. + """ + + @staticmethod + def _match_host(netrc_machine, request_host): + """Check if a netrc machine entry matches the request host. + + Handles cases like netrc having 'github.com' matching 'api.github.com'. + """ + return request_host == netrc_machine or request_host.endswith("." + netrc_machine) + + def __call__(self, r): + host = requests.utils.urlparse(r.url).hostname + netrc_path = os.path.expanduser("~/.netrc") + login, password = None, None + try: + with open(netrc_path) as f: + machine = None + for line in f: + tokens = line.split() + i = 0 + while i < len(tokens): + if tokens[i] == "machine": + i += 1 + machine = tokens[i] if i < len(tokens) else None + elif tokens[i] == "login" and machine and self._match_host(machine, host): + i += 1 + login = tokens[i] if i < len(tokens) else None + elif tokens[i] == "password" and machine and self._match_host(machine, host): + i += 1 + password = tokens[i] if i < len(tokens) else None + i += 1 + except (FileNotFoundError, OSError): + pass + + if login and password: + r.headers["Authorization"] = requests.auth._basic_auth_str(login, password) + return r + + +def _github_session(): + """Create a requests session that authenticates via ~/.netrc. + + Uses _NetrcAuth so credentials are read from disk on each request + without being extracted or stored by our code. + """ + session = requests.Session() + session.auth = _NetrcAuth() + session.headers.update({ + "Accept": "application/vnd.github.v3+json", + "User-Agent": "marker-discovery-tool", + }) + return session + + +def list_org_repos(org): + """List all repositories in a GitHub organization. + + Returns list of dicts with 'name' and 'clone_url' keys. + """ + session = _github_session() + repos = [] + page = 1 + + while True: + url = f"{GITHUB_API}/orgs/{org}/repos" + resp = session.get(url, params={"per_page": 100, "page": page}) + resp.raise_for_status() + data = resp.json() + if not data: + break + for repo in data: + repos.append({ + "name": repo["name"], + "clone_url": repo["clone_url"], + }) + page += 1 + + logger.info("Found %d repos in org %s", len(repos), org) + return repos + + +def search_code_in_org(org, query): + """Search for code in an organization using GitHub Search API. + + Returns a set of repository names that contain matches. + Rate-limited to 10 req/min for code search. + """ + session = _github_session() + repo_names = set() + page = 1 + search_query = f"{query} org:{org}" + + while True: + url = f"{GITHUB_API}/search/code" + resp = session.get(url, params={"q": search_query, "per_page": 100, "page": page}) + + if resp.status_code == 403: + # Rate limited — wait and retry + retry_after = int(resp.headers.get("Retry-After", 60)) + logger.warning("Search API rate limited, waiting %ds...", retry_after) + time.sleep(retry_after) + continue + + resp.raise_for_status() + data = resp.json() + items = data.get("items", []) + if not items: + break + + for item in items: + repo_names.add(item["repository"]["name"]) + + # Check if there are more pages + if len(items) < 100: + break + page += 1 + + # Respect rate limit: 10 req/min for code search + time.sleep(6) + + logger.info("Search '%s' in %s found matches in %d repos", query, org, len(repo_names)) + return repo_names + + +def search_all_markers_in_org(org): + """Search for all marker API patterns in an organization. + + Runs three searches (t2_event, t2ValNotify, t2CountNotify) and merges results. + Returns a set of repository names. + """ + all_repos = set() + for query in ["t2_event", "t2ValNotify", "t2CountNotify"]: + matches = search_code_in_org(org, query) + all_repos.update(matches) + logger.info("Total repos with marker matches in %s: %d", org, len(all_repos)) + return all_repos + + +def check_branch_exists(org, repo, branch): + """Check if a branch exists in a repository. Returns True/False.""" + session = _github_session() + url = f"{GITHUB_API}/repos/{org}/{repo}/branches/{branch}" + resp = session.get(url) + return resp.status_code == 200 + + +DEFAULT_ORGS = ["rdkcentral", "rdk-e", "rdk-common", "rdk-gdcs"] + + +def find_repo_org(repo_name, orgs=None): + """Find which organization a repo belongs to by checking each org. + + Args: + repo_name: Repository name to search for. + orgs: List of orgs to search (defaults to DEFAULT_ORGS). + + Returns org name if found, or None. + """ + if orgs is None: + orgs = DEFAULT_ORGS + + session = _github_session() + for org in orgs: + url = f"{GITHUB_API}/repos/{org}/{repo_name}" + resp = session.get(url) + if resp.status_code == 200: + logger.debug("Found %s in org %s", repo_name, org) + return org + + logger.warning("Repo %s not found in any org: %s", repo_name, orgs) + return None + + +def get_default_branch(org, repo_name): + """Get the default branch for a repo from the GitHub API.""" + session = _github_session() + url = f"{GITHUB_API}/repos/{org}/{repo_name}" + resp = session.get(url) + if resp.status_code == 200: + return resp.json().get("default_branch", "main") + return "main" + + +def clone_repo_at_ref(org, repo, ref, target_dir): + """Shallow clone a repo at a specific tag/branch with fallback to default branch. + + Fallback chain: ref → main → default branch of repo. + Returns (clone_path, actual_ref) on success, or (None, None) on failure. + """ + clone_url = f"https://github.com/{org}/{repo}.git" + clone_path = os.path.join(target_dir, repo) + + refs_to_try = [ref] if ref else [] + if "main" not in refs_to_try: + refs_to_try.append("main") + + for r in refs_to_try: + try: + result = subprocess.run( + ["git", "clone", "--depth", "1", "--branch", r, clone_url, clone_path], + capture_output=True, + text=True, + timeout=120, + ) + if result.returncode == 0: + logger.info("Cloned %s/%s at %s", org, repo, r) + return clone_path, r + else: + logger.debug("Ref %s not found for %s/%s", r, org, repo) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + except subprocess.TimeoutExpired: + logger.warning("Clone timeout for %s/%s at %s", org, repo, r) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + + # Last resort: clone without --branch (gets default branch) + try: + result = subprocess.run( + ["git", "clone", "--depth", "1", clone_url, clone_path], + capture_output=True, + text=True, + timeout=120, + ) + if result.returncode == 0: + logger.info("Cloned %s/%s at default branch", org, repo) + return clone_path, "default" + else: + if os.path.exists(clone_path): + _force_rmtree(clone_path) + except subprocess.TimeoutExpired: + if os.path.exists(clone_path): + _force_rmtree(clone_path) + + logger.warning("Failed to clone %s/%s", org, repo) + return None, None + + +def clone_repo(org, repo, branch, target_dir): + """Shallow clone a repo at the specified branch (no retries). + + Returns (clone_path, actual_branch) on success, or (None, None) on failure. + """ + clone_url = f"https://github.com/{org}/{repo}.git" + clone_path = os.path.join(target_dir, repo) + + try: + result = subprocess.run( + ["git", "clone", "--depth", "1", "--branch", branch, clone_url, clone_path], + capture_output=True, + text=True, + timeout=300, + ) + if result.returncode == 0: + logger.info("Cloned %s/%s on branch %s", org, repo, branch) + return clone_path, branch + else: + logger.debug("Clone failed for %s/%s on branch %s", branch, org, repo) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + except subprocess.TimeoutExpired: + logger.warning("Clone timeout for %s/%s on branch %s", org, repo, branch) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + + return None, None + + +def clone_matching_repos(org, repo_names, branch, temp_dir): + """Clone a list of repos with branch fallback. + + Args: + org: GitHub organization name + repo_names: iterable of repo names to clone + branch: target branch name + temp_dir: directory to clone into + + Returns list of dicts: {'name': str, 'path': str, 'branch': str} + """ + cloned = [] + for repo_name in sorted(repo_names): + clone_path, actual_branch = clone_repo(org, repo_name, branch, temp_dir) + if clone_path: + cloned.append({ + "name": repo_name, + "path": clone_path, + "branch": actual_branch, + }) + logger.info("Cloned %d/%d repos for org %s", len(cloned), len(list(repo_names)), org) + return cloned + + +def clone_components_from_file(components, temp_dir): + """Clone repos from a parsed version manifest file. + + Each component already has org, commit SHA, and clone URL from the parser. + Clones at exact commit SHA when possible, falls back to branch then default. + + Returns (cloned_list, unresolved_list). + + cloned_list: [{'name': str, 'path': str, 'branch': str, 'org': str}] + unresolved_list: [{'name': str, 'version': str, 'reason': str}] + """ + cloned = [] + unresolved = [] + + for comp in components: + name = comp['name'] + org = comp['org'] + commit = comp['commit'] + branch = comp.get('branch', '') + clone_url = comp['url'] + + clone_path = os.path.join(temp_dir, name) + + success = _clone_at_commit(clone_url, clone_path, commit) + + if success: + cloned.append({ + 'name': name, + 'path': clone_path, + 'branch': commit[:12], + 'org': org, + }) + else: + unresolved.append({ + 'name': name, + 'version': commit[:12], + 'reason': f'Clone failed for {org}/{name}', + }) + + logger.info("Cloned %d/%d components, %d unresolved", + len(cloned), len(components), len(unresolved)) + return cloned, unresolved + + +def _clone_at_commit(clone_url, clone_path, commit): + """Clone a repo at an exact commit SHA using fetch + checkout. + + Returns True on success, False on failure. + """ + if os.path.exists(clone_path): + _force_rmtree(clone_path) + + try: + # Init empty repo + subprocess.run( + ["git", "init", clone_path], + capture_output=True, text=True, timeout=30, + ) + # Add remote + subprocess.run( + ["git", "-C", clone_path, "remote", "add", "origin", clone_url], + capture_output=True, text=True, timeout=30, + ) + # Fetch the specific commit (shallow) + result = subprocess.run( + ["git", "-C", clone_path, "fetch", "--depth", "1", "origin", commit], + capture_output=True, text=True, timeout=300, + ) + if result.returncode != 0: + logger.debug("Could not fetch commit %s from %s", commit[:12], clone_url) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + return False + + # Checkout the fetched commit + result = subprocess.run( + ["git", "-C", clone_path, "checkout", "FETCH_HEAD"], + capture_output=True, text=True, timeout=300, + ) + if result.returncode == 0: + logger.info("Cloned %s at commit %s", clone_url, commit[:12]) + return True + + if os.path.exists(clone_path): + _force_rmtree(clone_path) + return False + + except subprocess.TimeoutExpired: + logger.warning("Clone timeout for %s at commit %s", clone_url, commit[:12]) + if os.path.exists(clone_path): + _force_rmtree(clone_path) + return False + + +def _clone_at_branch(clone_url, clone_path, branch): + """Shallow clone at a branch, or default if branch is None/empty. + + Returns True on success, False on failure. + """ + if os.path.exists(clone_path): + _force_rmtree(clone_path) + + try: + cmd = ["git", "clone", "--depth", "1"] + if branch: + cmd.extend(["--branch", branch]) + cmd.extend([clone_url, clone_path]) + + result = subprocess.run(cmd, capture_output=True, text=True, timeout=300) + if result.returncode == 0: + logger.info("Cloned %s on branch %s", clone_url, branch or "default") + return True + + if os.path.exists(clone_path): + _force_rmtree(clone_path) + return False + + except subprocess.TimeoutExpired: + logger.warning("Clone timeout for %s on branch %s", clone_url, branch or "default") + if os.path.exists(clone_path): + _force_rmtree(clone_path) + return False + + +def create_temp_dir(): + """Create a temporary directory for cloning repos.""" + return tempfile.mkdtemp(prefix="marker_discovery_") + + +def _force_rmtree(path): + """Remove a directory tree, handling stubborn files (e.g. git-lfs).""" + def _on_error(_func, _path, _exc_info): + try: + os.chmod(_path, 0o777) + _func(_path) + except OSError: + pass + shutil.rmtree(path, onerror=_on_error) + + +def cleanup_temp_dir(temp_dir): + """Remove temporary clone directory.""" + if temp_dir and os.path.exists(temp_dir): + _force_rmtree(temp_dir) + logger.info("Cleaned up temp directory: %s", temp_dir) diff --git a/tools/marker_discovery/marker_scanner.py b/tools/marker_discovery/marker_scanner.py new file mode 100755 index 00000000..bbc37faf --- /dev/null +++ b/tools/marker_discovery/marker_scanner.py @@ -0,0 +1,230 @@ +"""Marker Discovery Tool — CLI entry point and orchestration.""" + +import argparse +import logging +import sys + +from . import github_client, code_parser, script_parser, patch_parser, report_generator +from . import component_file_parser + +logger = logging.getLogger(__name__) + + +def setup_logging(verbose=False): + level = logging.DEBUG if verbose else logging.INFO + logging.basicConfig( + level=level, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", + stream=sys.stderr, + ) + + +def parse_args(argv=None): + parser = argparse.ArgumentParser( + description="Scan GitHub organizations for T2 telemetry marker instrumentation.", + ) + parser.add_argument( + "--branch", default="main", + help="Branch/tag to scan (default: main). Ignored when --input-file is used.", + ) + parser.add_argument( + "--org", nargs="+", dest="orgs", default=None, + help="GitHub organization(s) to scan (default: all 4 RDK orgs). Example: --org rdkcentral rdk-e", + ) + parser.add_argument( + "--repo", nargs="+", metavar="ORG/REPO", + help="One or more org/repo pairs to scan. Example: --repo rdkcentral/telemetry rdk-e/rdkservices-cpc", + ) + parser.add_argument( + "--input-file", + help="Version manifest file (versions.txt format). Clones only listed GitHub repos at exact commits.", + ) + parser.add_argument( + "--output", default=None, + help="Output file path for markdown report (default: stdout)", + ) + parser.add_argument( + "--verbose", "-v", action="store_true", + help="Enable verbose/debug logging", + ) + args = parser.parse_args(argv) + if args.repo: + for entry in args.repo: + if '/' not in entry: + parser.error(f"--repo requires org/repo format, got: {entry}") + if args.orgs is None: + args.orgs = list(github_client.DEFAULT_ORGS) + return args + + +def run_fast_path(org, branch, temp_dir): + """Fast path: use search API to find repos with markers, then clone only those.""" + logger.info("Fast path: searching for marker repos in %s via Search API...", org) + + matching_repos = github_client.search_all_markers_in_org(org) + if not matching_repos: + logger.warning("No repos with markers found in %s via search", org) + return [], 0 + + logger.info("Found %d repos with potential markers, cloning...", len(matching_repos)) + + # Get clone URLs for matching repos + all_repos = github_client.list_org_repos(org) + repo_names_to_clone = {r for r in matching_repos} + repos_to_clone = [r["name"] for r in all_repos if r["name"] in repo_names_to_clone] + + cloned = github_client.clone_matching_repos(org, repos_to_clone, branch, temp_dir) + return cloned, len(all_repos) + + +def run_full_path(org, branch, temp_dir): + """Full path: list all repos, clone all, scan locally.""" + logger.info("Full path: listing all repos in %s...", org) + + all_repos = github_client.list_org_repos(org) + repo_names = [r["name"] for r in all_repos] + + logger.info("Cloning %d repos on branch %s...", len(repo_names), branch) + cloned = github_client.clone_matching_repos(org, repo_names, branch, temp_dir) + return cloned, len(all_repos) + + +def run_full_path_single(org, repo, branch, temp_dir): + """Clone and scan a single repo.""" + logger.info("Single-repo mode: cloning %s/%s on branch %s...", org, repo, branch) + clone_path, actual_branch = github_client.clone_repo(org, repo, branch, temp_dir) + if clone_path: + return [{"name": repo, "path": clone_path, "branch": actual_branch, "org": org}] + logger.warning("Failed to clone %s/%s", org, repo) + return [] + + +def scan_cloned_repos(cloned_repos): + """Run all scanners on cloned repos. Returns list of MarkerRecord.""" + all_markers = [] + + for repo_info in cloned_repos: + repo_path = repo_info["path"] + repo_name = repo_info["name"] + + logger.info("Scanning %s...", repo_name) + + # C/C++ source scanning (tree-sitter) + try: + markers = code_parser.scan_repo(repo_path, repo_name) + all_markers.extend(markers) + except Exception as e: + logger.warning("Code parser failed for %s: %s", repo_name, e) + + # Script scanning + try: + markers = script_parser.scan_repo_scripts(repo_path, repo_name) + all_markers.extend(markers) + except Exception as e: + logger.warning("Script parser failed for %s: %s", repo_name, e) + + # Patch scanning + try: + markers = patch_parser.scan_repo_patches(repo_path, repo_name) + all_markers.extend(markers) + except Exception as e: + logger.warning("Patch parser failed for %s: %s", repo_name, e) + + return all_markers + + +def run_input_file_path(input_file, temp_dir): + """Input-file path: parse version manifest, clone at exact commits.""" + logger.info("Input-file path: reading components from %s", input_file) + + components = component_file_parser.parse_component_file(input_file) + + if not components: + logger.warning("No components found in %s", input_file) + return [], 0, [] + + cloned, unresolved = github_client.clone_components_from_file(components, temp_dir) + return cloned, len(components), unresolved + + +def main(argv=None): + args = parse_args(argv) + setup_logging(args.verbose) + + temp_dir = github_client.create_temp_dir() + logger.info("Using temp directory: %s", temp_dir) + + try: + all_markers = [] + total_repos_scanned = 0 + unresolved_components = [] + + if args.input_file: + # Input-file mode: clone from version manifest + cloned, total_components, unresolved = run_input_file_path( + args.input_file, temp_dir + ) + total_repos_scanned = total_components + unresolved_components = unresolved + + markers = scan_cloned_repos(cloned) + all_markers.extend(markers) + + branch_display = f"per-component (from {args.input_file})" + elif args.repo: + # Multi-repo mode: clone specified org/repo pairs + cloned = [] + repo_orgs = set() + for entry in args.repo: + org, repo = entry.split('/', 1) + repo_orgs.add(org) + cloned.extend(run_full_path_single(org, repo, args.branch, temp_dir)) + total_repos_scanned = len(args.repo) + args.orgs = sorted(repo_orgs) + + if cloned: + markers = scan_cloned_repos(cloned) + all_markers.extend(markers) + + branch_display = args.branch + else: + # Default mode: scan all repos in all orgs on main branch + for org in args.orgs: + cloned, total_in_org = run_full_path(org, args.branch, temp_dir) + total_repos_scanned += total_in_org + + markers = scan_cloned_repos(cloned) + all_markers.extend(markers) + + branch_display = args.branch + + # Generate report + report = report_generator.generate_report( + markers=all_markers, + branch=branch_display, + orgs=args.orgs, + components_scanned=total_repos_scanned, + unresolved_components=unresolved_components, + ) + + # Output + if args.output: + with open(args.output, "w", encoding="utf-8") as f: + f.write(report) + logger.info("Report written to %s", args.output) + else: + print(report) + + logger.info("Done. Found %d markers total.", len(all_markers)) + return 0 + + except Exception as e: + logger.error("Fatal error: %s", e, exc_info=True) + return 1 + + finally: + github_client.cleanup_temp_dir(temp_dir) + + +if __name__ == "__main__": + sys.exit(main()) \ No newline at end of file diff --git a/tools/marker_discovery/patch_parser.py b/tools/marker_discovery/patch_parser.py new file mode 100755 index 00000000..f618b30b --- /dev/null +++ b/tools/marker_discovery/patch_parser.py @@ -0,0 +1,77 @@ +"""Patch file scanner for t2 telemetry markers in added lines.""" + +import logging +import os +import re + +from . import MarkerRecord + +logger = logging.getLogger(__name__) + +# Patterns for C/C++ API calls in patches +C_PATTERNS = [ + (re.compile(r't2_event_s\s*\(\s*"([^"]+)"'), "t2_event_s"), + (re.compile(r't2_event_d\s*\(\s*"([^"]+)"'), "t2_event_d"), + (re.compile(r't2_event_f\s*\(\s*"([^"]+)"'), "t2_event_f"), +] + +# Patterns for script API calls in patches +SCRIPT_PATTERNS = [ + (re.compile(r't2ValNotify\s+"([^"]+)"'), "t2ValNotify"), + (re.compile(r't2CountNotify\s+"([^"]+)"'), "t2CountNotify"), +] + +ALL_PATTERNS = C_PATTERNS + SCRIPT_PATTERNS + + +# Directory names to skip during scanning +SKIP_DIRS = {"test", "tests", ".git"} + + +def _find_patch_files(repo_path): + """Recursively find all .patch files in a directory.""" + patch_files = [] + for root, dirs, files in os.walk(repo_path): + dirs[:] = [d for d in dirs if d.lower() not in SKIP_DIRS] + for fname in files: + if fname.endswith(".patch"): + patch_files.append(os.path.join(root, fname)) + return patch_files + + +def scan_repo_patches(repo_path, repo_name): + """Scan all .patch files in a repo for t2 marker calls in added lines. + + Only lines starting with '+' (excluding '+++' headers) are scanned. + Returns list of MarkerRecord with source_type="patch". + """ + markers = [] + patch_files = _find_patch_files(repo_path) + component = f"{repo_name} (patch)" + + for file_path in patch_files: + rel_path = os.path.relpath(file_path, repo_path) + + try: + with open(file_path, "r", errors="ignore") as f: + for line_num, line in enumerate(f, start=1): + # Only scan added lines, exclude +++ header + if not line.startswith("+") or line.startswith("+++"): + continue + + for pattern, api_name in ALL_PATTERNS: + for match in pattern.finditer(line): + marker_name = match.group(1) + markers.append(MarkerRecord( + marker_name=marker_name, + component=component, + file_path=rel_path, + line=line_num, + api=api_name, + source_type="patch", + )) + except (IOError, OSError) as e: + logger.warning("Could not read %s: %s", file_path, e) + + logger.info("Found %d patch markers in %s", len(markers), repo_name) + return markers \ No newline at end of file diff --git a/tools/marker_discovery/report_generator.py b/tools/marker_discovery/report_generator.py new file mode 100755 index 00000000..5ffc3f61 --- /dev/null +++ b/tools/marker_discovery/report_generator.py @@ -0,0 +1,154 @@ +"""Markdown report generator for telemetry marker discovery results.""" + +import logging +from collections import defaultdict +from datetime import datetime, timezone + +from . import MarkerRecord + +logger = logging.getLogger(__name__) + + +def _find_duplicates(markers): + """Find markers that appear in more than one component. + + Returns dict: marker_name → list of MarkerRecord (only for duplicates). + """ + by_name_and_component = defaultdict(set) + by_name = defaultdict(list) + + for m in markers: + by_name_and_component[m.marker_name].add(m.component) + by_name[m.marker_name].append(m) + + duplicates = {} + for name, components in by_name_and_component.items(): + if len(components) > 1: + duplicates[name] = by_name[name] + + return duplicates + + +def _get_unique_components(markers): + """Get set of unique component names from markers.""" + return {m.component for m in markers} + + +def generate_report(markers, branch, orgs, components_scanned, unresolved_components=None): + """Generate a markdown report from discovered markers. + + Args: + markers: list of MarkerRecord + branch: branch name that was scanned + orgs: list of organization names + components_scanned: total number of repos scanned + unresolved_components: optional list of dicts with 'name', 'version', 'reason' + + Returns markdown string. + """ + if unresolved_components is None: + unresolved_components = [] + # Separate static and dynamic markers + static_markers = [m for m in markers if m.source_type != "script_dynamic"] + dynamic_markers = [m for m in markers if m.source_type == "script_dynamic"] + + # Sort by marker name, then component + sorted_static = sorted(static_markers, key=lambda m: (m.marker_name.lower(), m.component.lower())) + sorted_dynamic = sorted(dynamic_markers, key=lambda m: (m.marker_name.lower(), m.component.lower())) + + # Detect duplicates (among static markers only) + duplicates = _find_duplicates(static_markers) + duplicate_names = set(duplicates.keys()) + + # Timestamp + now = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC") + orgs_str = ", ".join(orgs) + + lines = [] + + # Header + lines.append("# Telemetry Marker Inventory") + lines.append(f"**Branch**: {branch}") + lines.append(f"**Organizations**: {orgs_str}") + lines.append(f"**Generated**: {now}") + lines.append("") + + # Summary + lines.append("## Summary") + lines.append(f"- **Total Markers**: {len(markers):,}") + lines.append(f"- **Static Markers**: {len(sorted_static):,}") + if sorted_dynamic: + lines.append(f"- **Dynamic Markers**: {len(sorted_dynamic):,} (contain shell variables)") + lines.append(f"- **Components Scanned**: {components_scanned}") + if unresolved_components: + lines.append(f"- **Unresolved Components**: {len(unresolved_components)} ⚠️") + if duplicate_names: + lines.append(f"- **Duplicate Markers**: {len(duplicate_names)} ⚠️") + else: + lines.append(f"- **Duplicate Markers**: 0") + lines.append("") + + # Unique Marker Inventory (one row per unique marker name, with components) + lines.append("## Unique Marker Inventory") + lines.append("| Marker Name | Components |") + lines.append("|-------------|------------|") + + unique_marker_components = defaultdict(set) + for m in sorted_static: + unique_marker_components[m.marker_name].add(m.component) + + for name in sorted(unique_marker_components.keys(), key=str.lower): + components = ", ".join(sorted(unique_marker_components[name], key=str.lower)) + lines.append(f"| {name} | {components} |") + + lines.append("") + + # Detailed Marker Inventory table (static markers only) + lines.append("## Detailed Marker Inventory") + lines.append("| Marker Name | Component | File Path | Line | API |") + lines.append("|-------------|-----------|-----------|------|-----|") + + for m in sorted_static: + name_display = m.marker_name + if m.marker_name in duplicate_names: + name_display = f"{m.marker_name} ⚠️" + lines.append(f"| {name_display} | {m.component} | {m.file_path} | {m.line} | {m.api} |") + + lines.append("") + + # Dynamic Markers section (markers containing shell variables) + if sorted_dynamic: + lines.append("## Dynamic Markers") + lines.append("Markers containing shell variables (`$var`, `${var}`) that resolve at runtime.") + lines.append("") + lines.append("| Marker Pattern | Component | File Path | Line | API |") + lines.append("|----------------|-----------|-----------|------|-----|") + + for m in sorted_dynamic: + lines.append(f"| {m.marker_name} | {m.component} | {m.file_path} | {m.line} | {m.api} |") + + lines.append("") + + # Duplicate Markers section (only if duplicates exist) + if duplicate_names: + lines.append("## Duplicate Markers") + for name in sorted(duplicate_names, key=str.lower): + dup_records = duplicates[name] + components = _get_unique_components(dup_records) + lines.append(f"⚠️ **{name}** - Found in {len(components)} components:") + for record in sorted(dup_records, key=lambda r: r.component.lower()): + lines.append(f"- {record.component}: {record.file_path}:{record.line} (`{record.api}`)") + lines.append("") + + # Unresolved Components section (only when using input file) + if unresolved_components: + lines.append("## Unresolved Components") + lines.append("Components from the input file that could not be scanned.") + lines.append("") + lines.append("| Component | Version | Reason |") + lines.append("|-----------|---------|--------|") + for comp in sorted(unresolved_components, key=lambda c: c['name'].lower()): + lines.append(f"| {comp['name']} | {comp['version']} | {comp['reason']} |") + lines.append("") + + return "\n".join(lines) \ No newline at end of file diff --git a/tools/marker_discovery/requirements.txt b/tools/marker_discovery/requirements.txt new file mode 100755 index 00000000..4793104e --- /dev/null +++ b/tools/marker_discovery/requirements.txt @@ -0,0 +1,3 @@ +tree-sitter>=0.21.0 +tree-sitter-c>=0.21.0 +requests>=2.31.0 diff --git a/tools/marker_discovery/script_parser.py b/tools/marker_discovery/script_parser.py new file mode 100755 index 00000000..7d38c314 --- /dev/null +++ b/tools/marker_discovery/script_parser.py @@ -0,0 +1,185 @@ +"""Script file scanner for t2ValNotify and t2CountNotify marker calls.""" + +import logging +import os +import re + +from . import MarkerRecord + +logger = logging.getLogger(__name__) + +# Extensions to exclude (handled by code_parser or patch_parser) +EXCLUDE_EXTENSIONS = {".c", ".cpp", ".h", ".patch", ".o", ".so", ".a", ".bin", + ".png", ".jpg", ".jpeg", ".gif", ".ico", ".pdf", + ".tar", ".gz", ".zip", ".bz2", ".xz"} + +# Patterns for script-level telemetry calls +# Matches: t2ValNotify "MARKER_NAME" ... +# t2CountNotify "MARKER_NAME" ... +SCRIPT_PATTERNS = [ + (re.compile(r't2ValNotify\s+"([^"]+)"'), "t2ValNotify"), + (re.compile(r't2CountNotify\s+"([^"]+)"'), "t2CountNotify"), +] + +# Pattern to detect shell variables in marker names +SHELL_VAR_PATTERN = re.compile(r'\$\{?\w+\}?') + +# Pattern to detect markers that are ENTIRELY a positional arg (e.g. "$1", "$2") +PURE_POSITIONAL_PATTERN = re.compile(r'^\$\d+$') + +# Directory names to skip during scanning +SKIP_DIRS = {"test", "tests", ".git"} + + +def _is_dynamic_marker(marker_name): + """Check if a marker name contains shell variables.""" + return bool(SHELL_VAR_PATTERN.search(marker_name)) + + +def _is_script_file(file_path): + """Check if a file should be scanned as a script (not C/C++, not binary).""" + ext = os.path.splitext(file_path)[1].lower() + if ext in EXCLUDE_EXTENSIONS: + return False + # Skip files without extensions that look binary + try: + with open(file_path, "rb") as f: + chunk = f.read(512) + if b"\x00" in chunk: + return False + except (IOError, OSError): + return False + return True + + +def _resolve_function_calls(file_content, func_name, arg_position): + """Try to resolve a shell function's argument by finding its call sites in the same file. + + Looks for: func_name "LITERAL" ... where LITERAL is at arg_position (0-based). + Returns list of resolved string literals. + """ + resolved = [] + # Pattern: function_name followed by arguments + # Shell function call: func_name arg1 arg2 ... + # Arguments can be quoted or unquoted + pattern = re.compile( + r'(?:^|\s)' + re.escape(func_name) + r'\s+(.*)', re.MULTILINE + ) + for match in pattern.finditer(file_content): + args_str = match.group(1).strip() + # Parse arguments (handle quoted strings) + args = [] + i = 0 + while i < len(args_str): + if args_str[i] == '"': + # Quoted argument + end = args_str.find('"', i + 1) + if end != -1: + args.append(args_str[i + 1:end]) + i = end + 1 + else: + break + elif args_str[i] in (' ', '\t'): + i += 1 + continue + else: + # Unquoted argument + end = i + while end < len(args_str) and args_str[end] not in (' ', '\t', ';', '#', '\n'): + end += 1 + args.append(args_str[i:end]) + i = end + + if len(args) > arg_position: + val = args[arg_position] + # Only accept if it looks like a static marker (no variables) + if not _is_dynamic_marker(val): + resolved.append(val) + + return resolved + + +def _find_shell_function_for_line(file_content, line_num): + """Find what shell function a given line belongs to. + + Returns (function_name, positional_arg_index) if the marker at line_num + uses a positional parameter like $1, $2, or None if not in a function. + """ + lines = file_content.split('\n') + if line_num < 1 or line_num > len(lines): + return None + + # Walk backwards to find function definition + func_pattern = re.compile(r'^\s*(?:function\s+)?(\w+)\s*\(\s*\)') + for i in range(line_num - 1, -1, -1): + line = lines[i] + m = func_pattern.match(line) + if m: + return m.group(1) + # If we hit another closing brace at column 0, we've left the function + if line.strip() == '}' and i < line_num - 1: + return None + + return None + + +def scan_repo_scripts(repo_path, repo_name): + """Scan all script files in a repo for t2ValNotify/t2CountNotify calls. + + Returns list of MarkerRecord with source_type="script" or "script_dynamic". + """ + markers = [] + + for root, dirs, files in os.walk(repo_path): + # Skip test and .git directories + dirs[:] = [d for d in dirs if d.lower() not in SKIP_DIRS] + for fname in files: + file_path = os.path.join(root, fname) + if not _is_script_file(file_path): + continue + + rel_path = os.path.relpath(file_path, repo_path) + + try: + with open(file_path, "r", errors="ignore") as f: + file_content = f.read() + + for line_num, line in enumerate(file_content.split('\n'), start=1): + for pattern, api_name in SCRIPT_PATTERNS: + for match in pattern.finditer(line): + marker_name = match.group(1) + is_dynamic = _is_dynamic_marker(marker_name) + + if is_dynamic and PURE_POSITIONAL_PATTERN.match(marker_name): + # Pure positional arg (e.g. "$1") — try to resolve + # by finding the enclosing function and its call sites + arg_idx = int(marker_name[1:]) - 1 # $1 → index 0 + func_name = _find_shell_function_for_line(file_content, line_num) + if func_name: + resolved = _resolve_function_calls(file_content, func_name, arg_idx) + if resolved: + for resolved_name in resolved: + markers.append(MarkerRecord( + marker_name=resolved_name, + component=repo_name, + file_path=rel_path, + line=line_num, + api=f"{func_name}→{api_name}", + source_type="script", + )) + continue # skip adding the unresolved $1 entry + + source_type = "script_dynamic" if is_dynamic else "script" + markers.append(MarkerRecord( + marker_name=marker_name, + component=repo_name, + file_path=rel_path, + line=line_num, + api=api_name, + source_type=source_type, + )) + except (IOError, OSError) as e: + logger.warning("Could not read %s: %s", file_path, e) + + logger.info("Found %d script markers in %s", len(markers), repo_name) + return markers \ No newline at end of file diff --git a/tools/marker_discovery/tests/__init__.py b/tools/marker_discovery/tests/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/tools/marker_discovery/tests/debug_wrappers.py b/tools/marker_discovery/tests/debug_wrappers.py new file mode 100755 index 00000000..96a8761f --- /dev/null +++ b/tools/marker_discovery/tests/debug_wrappers.py @@ -0,0 +1,6 @@ +import sys +sys.path.insert(0, "/mnt/L2_CONTAINER_SHARED_VOLUME/59001") +from tools.marker_discovery.code_parser import detect_wrappers +ws = detect_wrappers("/tmp/test_telemetry") +for w in ws: + print(w) diff --git a/tools/marker_discovery/tests/integration_test.py b/tools/marker_discovery/tests/integration_test.py new file mode 100755 index 00000000..cffdcc5c --- /dev/null +++ b/tools/marker_discovery/tests/integration_test.py @@ -0,0 +1,37 @@ +"""Quick integration test against a real cloned repo.""" +import sys +sys.path.insert(0, "/mnt/L2_CONTAINER_SHARED_VOLUME/59001") + +from tools.marker_discovery.code_parser import scan_repo +from tools.marker_discovery.script_parser import scan_repo_scripts +from tools.marker_discovery.patch_parser import scan_repo_patches +from tools.marker_discovery.report_generator import generate_report + +repo_path = "/tmp/test_telemetry" +repo_name = "telemetry" + +print("=== Code Parser ===") +code_markers = scan_repo(repo_path, repo_name) +for m in code_markers[:10]: + print(f" {m.marker_name:40s} | {m.file_path:50s} | {m.line:5d} | {m.api}") +print(f" ... Total code markers: {len(code_markers)}") + +print("\n=== Script Parser ===") +script_markers = scan_repo_scripts(repo_path, repo_name) +for m in script_markers[:10]: + print(f" {m.marker_name:40s} | {m.file_path:50s} | {m.line:5d} | {m.api}") +print(f" ... Total script markers: {len(script_markers)}") + +print("\n=== Patch Parser ===") +patch_markers = scan_repo_patches(repo_path, repo_name) +for m in patch_markers[:10]: + print(f" {m.marker_name:40s} | {m.file_path:50s} | {m.line:5d} | {m.api}") +print(f" ... Total patch markers: {len(patch_markers)}") + +all_markers = code_markers + script_markers + patch_markers +print(f"\n=== TOTAL: {len(all_markers)} markers ===") + +print("\n=== Report Preview (first 30 lines) ===") +report = generate_report(all_markers, "develop", ["rdkcentral"], 1) +for line in report.split("\n")[:30]: + print(line) diff --git a/tools/marker_discovery/tests/test_code_parser.py b/tools/marker_discovery/tests/test_code_parser.py new file mode 100755 index 00000000..9929a996 --- /dev/null +++ b/tools/marker_discovery/tests/test_code_parser.py @@ -0,0 +1,178 @@ +"""Tests for code_parser module — direct call extraction and wrapper resolution.""" + +import os +import tempfile +import pytest + +from tools.marker_discovery.code_parser import scan_direct_calls, detect_wrappers, resolve_wrapper_calls, scan_repo + + +@pytest.fixture +def repo_with_direct_calls(tmp_path): + """Create a fake repo with direct t2_event_* calls.""" + src = tmp_path / "src" + src.mkdir() + + (src / "telemetry.c").write_text(''' +#include +#include "t2_api.h" + +void report_metrics() { + t2_event_s("WIFI_CONNECT_OK", "success"); + t2_event_d("CPU_USAGE", cpu_pct); + t2_event_f("MEM_FREE_PCT", mem_free); +} +''') + + (src / "other.h").write_text(''' +#ifndef OTHER_H +#define OTHER_H +// No markers here +void do_stuff(); +#endif +''') + + return tmp_path + + +@pytest.fixture +def repo_with_multiline_call(tmp_path): + """Repo with a multi-line t2_event call.""" + src = tmp_path / "src" + src.mkdir() + + (src / "multi.c").write_text(''' +void foo() { + t2_event_s( + "LONG_MARKER_NAME", + some_variable + ); +} +''') + return tmp_path + + +@pytest.fixture +def repo_with_wrapper(tmp_path): + """Repo with a wrapper function and call sites.""" + src = tmp_path / "src" + src.mkdir() + + # File with wrapper definition + (src / "wrapper.c").write_text(''' +#include "t2_api.h" + +void t2CountNotify(const char *marker, int val) { + t2_event_d(marker, val); +} +''') + + # File with wrapper call sites + (src / "caller.c").write_text(''' +#include "wrapper.h" + +void check_status() { + t2CountNotify("STATUS_CHECK_OK", 1); + t2CountNotify("STATUS_CHECK_FAIL", 0); +} +''') + + return tmp_path + + +@pytest.fixture +def repo_with_variable_marker(tmp_path): + """Repo with a t2_event_* call using a variable (not resolvable without wrapper).""" + src = tmp_path / "src" + src.mkdir() + + (src / "dynamic.c").write_text(''' +void report(const char *name) { + t2_event_s(name, "1"); +} +''') + return tmp_path + + +class TestDirectCalls: + def test_finds_all_three_api_types(self, repo_with_direct_calls): + markers = scan_direct_calls(repo_with_direct_calls, "test-repo") + + assert len(markers) == 3 + names = {m.marker_name for m in markers} + assert names == {"WIFI_CONNECT_OK", "CPU_USAGE", "MEM_FREE_PCT"} + + apis = {m.api for m in markers} + assert apis == {"t2_event_s", "t2_event_d", "t2_event_f"} + + def test_correct_metadata(self, repo_with_direct_calls): + markers = scan_direct_calls(repo_with_direct_calls, "my-component") + + for m in markers: + assert m.component == "my-component" + assert m.source_type == "source" + assert m.file_path.startswith("src/") + assert m.line > 0 + + def test_multiline_call(self, repo_with_multiline_call): + markers = scan_direct_calls(repo_with_multiline_call, "test") + + assert len(markers) == 1 + assert markers[0].marker_name == "LONG_MARKER_NAME" + assert markers[0].api == "t2_event_s" + + def test_skips_variable_marker(self, repo_with_variable_marker): + """Direct scan should NOT pick up calls with variable first args.""" + markers = scan_direct_calls(repo_with_variable_marker, "test") + assert len(markers) == 0 + + def test_empty_repo(self, tmp_path): + markers = scan_direct_calls(tmp_path, "empty") + assert markers == [] + + +class TestWrapperDetection: + def test_detects_wrapper(self, repo_with_wrapper): + wrappers = detect_wrappers(repo_with_wrapper) + + assert len(wrappers) == 1 + w = wrappers[0] + assert w["wrapper_name"] == "t2CountNotify" + assert w["marker_param_index"] == 0 + assert w["api"] == "t2_event_d" + + def test_no_wrappers_in_direct_only(self, repo_with_direct_calls): + wrappers = detect_wrappers(repo_with_direct_calls) + assert len(wrappers) == 0 + + +class TestWrapperResolution: + def test_resolves_call_sites(self, repo_with_wrapper): + wrappers = detect_wrappers(repo_with_wrapper) + markers = resolve_wrapper_calls(repo_with_wrapper, "test-repo", wrappers) + + assert len(markers) == 2 + names = {m.marker_name for m in markers} + assert names == {"STATUS_CHECK_OK", "STATUS_CHECK_FAIL"} + + for m in markers: + assert m.api == "t2CountNotify→t2_event_d" + assert m.source_type == "source" + + +class TestScanRepo: + def test_full_scan_combines_direct_and_wrapper(self, repo_with_wrapper): + # Add a direct call file too + src = repo_with_wrapper / "src" + (src / "direct.c").write_text(''' +void init() { + t2_event_s("INIT_OK", "1"); +} +''') + + markers = scan_repo(repo_with_wrapper, "combo-repo") + + names = {m.marker_name for m in markers} + assert "INIT_OK" in names + assert "STATUS_CHECK_OK" in names + assert "STATUS_CHECK_FAIL" in names diff --git a/tools/marker_discovery/tests/test_component_file_parser.py b/tools/marker_discovery/tests/test_component_file_parser.py new file mode 100755 index 00000000..1b4be138 --- /dev/null +++ b/tools/marker_discovery/tests/test_component_file_parser.py @@ -0,0 +1,123 @@ +"""Tests for component_file_parser module — versions.txt parsing.""" + +import pytest + +from tools.marker_discovery.component_file_parser import parse_component_file + + +@pytest.fixture +def versions_file(tmp_path): + """Create a sample versions.txt file.""" + content = """\ +b'https://github.com/rdkcentral/meta-rdk-iot'@a798f942e586cb29c9eb4687668ae3cbfe50edaa : a798f942e586cb29c9eb4687668ae3cbfe50edaa +b'ssh://gerrit.teamccp.com:29418/rdk/yocto_oe/layers/meta-rdk'@b1e496d0dfb0dddd118e90bb33588950bd7a4306 : b1e496d0dfb0dddd118e90bb33588950bd7a4306 +https://github.com/rdkcentral/rbus.git@develop : 4a25e92112e827f7007de52488666c81c4564b5a +https://github.com/rdk-e/some-repo@main : deadbeef1234567890abcdef1234567890abcdef +https://github.com/Comcast/libparodus.git@master : 8263bb06c8c16dc114c800a3d29d0c8252f15619 +https://github.com/rdkcentral/breakpad_wrapper.git@ : be8cd679e095cd300f77913863724fa5e39a6182 +git://git.kernel.org/pub/scm/utils/dtc/dtc.git@master : 302fca9f4c283e1994cf0a5a9ce1cf43ca15e6d2 +https://github.com/arsv/perl-cross/releases/download/1.3.7/perl-cross-1.3.7.tar.gz : md5sum None +http://github.com/ayourtch/nat46.git@master : 80dda1d08efe361b4f236eeae56015065cba1b1d +ssh://github.com/rdk-e/rdkservices-cpc@ : 1dff01bd7714ce9076b718f7138ca490a60b26f0 +ssh://github.com/rdk-e/airplay-application-cpc@ : 43c9d71147fa8785f37eadab3143179fd86b01a1 +b'ssh://git@github.com/rdk-e/meta-rdk-tools'@690b41b5ad8bc7a634ec9c50ee7019335e2e404f : 690b41b5ad8bc7a634ec9c50ee7019335e2e404f +b'ssh://git@github.com/rdk-common/meta-cspc-security-release'@e8050b5c28a796ecc67e9029094294f41d799d03 : e8050b5c28a796ecc67e9029094294f41d799d03 +ssh://github.com/entos-xe/asanalytics.git@ : c32b5d703f1e6222bc3a59b653b456682704ae85 +ssh://gerrit.teamccp.com:29418/rdk/components/generic/fonts/generic@stable2 : d9de2ee1005626201a9ec60c9f685a2450f8cc73 +""" + f = tmp_path / "versions.txt" + f.write_text(content) + return f + + +class TestParseComponentFile: + def test_parses_all_github_repos(self, versions_file): + components = parse_component_file(str(versions_file)) + names = {c['name'] for c in components} + # Should include ALL GitHub repos regardless of org + assert "meta-rdk-iot" in names + assert "rbus" in names + assert "some-repo" in names + assert "rdkservices-cpc" in names + assert "airplay-application-cpc" in names + assert "meta-rdk-tools" in names + assert "meta-cspc-security-release" in names + # Comcast, ayourtch, entos-xe repos also included + assert "libparodus" in names + assert "nat46" in names + assert "asanalytics" in names + + def test_skips_non_github_urls(self, versions_file): + components = parse_component_file(str(versions_file)) + names = {c['name'] for c in components} + # gerrit entries should be skipped (both b'ssh://gerrit and ssh://gerrit) + assert "meta-rdk" not in names + assert "generic" not in names + # kernel.org should be skipped + assert "dtc" not in names + + def test_skips_tarball_downloads(self, versions_file): + components = parse_component_file(str(versions_file)) + names = {c['name'] for c in components} + assert "perl-cross" not in names + + def test_extracts_org(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + assert by_name["meta-rdk-iot"]["org"] == "rdkcentral" + assert by_name["rbus"]["org"] == "rdkcentral" + assert by_name["some-repo"]["org"] == "rdk-e" + + def test_extracts_commit_sha(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + assert by_name["rbus"]["commit"] == "4a25e92112e827f7007de52488666c81c4564b5a" + + def test_extracts_branch(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + assert by_name["rbus"]["branch"] == "develop" + assert by_name["some-repo"]["branch"] == "main" + + def test_empty_branch(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + # breakpad_wrapper has empty ref after @ + assert by_name["breakpad_wrapper"]["branch"] == "" + + def test_builds_clone_url(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + # HTTPS source keeps HTTPS clone URL + assert by_name["rbus"]["url"] == "https://github.com/rdkcentral/rbus.git" + # SSH sources are converted to HTTPS clone URLs + assert by_name["rdkservices-cpc"]["url"] == "https://github.com/rdk-e/rdkservices-cpc.git" + assert by_name["meta-rdk-tools"]["url"] == "https://github.com/rdk-e/meta-rdk-tools.git" + + def test_handles_byte_string_prefix(self, versions_file): + components = parse_component_file(str(versions_file)) + by_name = {c['name']: c for c in components} + # b'...' format should still be parsed + assert "meta-rdk-iot" in by_name + + def test_empty_file(self, tmp_path): + f = tmp_path / "empty.txt" + f.write_text("") + components = parse_component_file(str(f)) + assert components == [] + + def test_count_matches_real_file(self, tmp_path): + """Test with a small realistic snippet.""" + content = """\ +https://github.com/rdkcentral/advanced-security@develop : 81176604c5e971ca77a1ea70d57a9e3dda0a7a1e +https://github.com/rdkcentral/rbus.git@develop : 4a25e92112e827f7007de52488666c81c4564b5a +https://github.com/rdkcentral/OneWifi.git@develop : 4755197732ded811a114136441dfa34a5faf12cd +https://github.com/Comcast/libparodus.git@master : 8263bb06c8c16dc114c800a3d29d0c8252f15619 +git://git.kernel.org/pub/scm/utils/dtc/dtc.git@master : 302fca9f4c283e1994cf0a5a9ce1cf43ca15e6d2 +ssh://github.com/rdk-e/ipcontrol@ : 59e631bf8620fe1e2196c78240dbb8d8f424c70e +b'ssh://git@github.com/rdk-e/meta-rdk-tools'@690b41b5 : 690b41b5ad8bc7a634ec9c50ee7019335e2e404f +""" + f = tmp_path / "versions.txt" + f.write_text(content) + components = parse_component_file(str(f)) + assert len(components) == 6 # 3 rdkcentral + 1 Comcast + 2 rdk-e diff --git a/tools/marker_discovery/tests/test_patch_parser.py b/tools/marker_discovery/tests/test_patch_parser.py new file mode 100755 index 00000000..d96a5e5e --- /dev/null +++ b/tools/marker_discovery/tests/test_patch_parser.py @@ -0,0 +1,112 @@ +"""Tests for patch_parser module — .patch file scanning.""" + +import pytest + +from tools.marker_discovery.patch_parser import scan_repo_patches + + +SAMPLE_PATCH = '''diff --git a/src/telemetry.c b/src/telemetry.c +--- a/src/telemetry.c ++++ b/src/telemetry.c +@@ -10,6 +10,8 @@ + context line ++ t2_event_s("NEW_MARKER", "value"); ++ t2_event_d("ADDED_COUNT", count); +- t2_event_s("OLD_MARKER", "removed"); + more context +''' + +SAMPLE_PATCH_SCRIPTS = '''diff --git a/scripts/monitor.sh b/scripts/monitor.sh +--- a/scripts/monitor.sh ++++ b/scripts/monitor.sh +@@ -5,3 +5,5 @@ + echo "starting" ++t2ValNotify "SCRIPT_NEW_MARKER" "$val" ++t2CountNotify "SCRIPT_COUNT" 1 + echo "done" +''' + +SAMPLE_PATCH_MIXED = '''diff --git a/src/foo.c b/src/foo.c ++++ b/src/foo.c +@@ -1,3 +1,5 @@ ++ t2_event_f("FLOAT_MARKER", fval); ++t2ValNotify "MIXED_VAL" "test" +''' + + +@pytest.fixture +def repo_with_patches(tmp_path): + patches = tmp_path / "patches" + patches.mkdir() + (patches / "telemetry.patch").write_text(SAMPLE_PATCH) + return tmp_path + + +@pytest.fixture +def repo_with_script_patches(tmp_path): + patches = tmp_path / "patches" + patches.mkdir() + (patches / "scripts.patch").write_text(SAMPLE_PATCH_SCRIPTS) + return tmp_path + + +@pytest.fixture +def repo_with_mixed_patches(tmp_path): + patches = tmp_path / "patches" + patches.mkdir() + (patches / "mixed.patch").write_text(SAMPLE_PATCH_MIXED) + return tmp_path + + +class TestPatchParser: + def test_finds_added_c_markers(self, repo_with_patches): + markers = scan_repo_patches(repo_with_patches, "test-repo") + + names = {m.marker_name for m in markers} + assert "NEW_MARKER" in names + assert "ADDED_COUNT" in names + # Removed lines should NOT be found + assert "OLD_MARKER" not in names + + def test_correct_api_types(self, repo_with_patches): + markers = scan_repo_patches(repo_with_patches, "test") + api_map = {m.marker_name: m.api for m in markers} + assert api_map["NEW_MARKER"] == "t2_event_s" + assert api_map["ADDED_COUNT"] == "t2_event_d" + + def test_component_has_patch_suffix(self, repo_with_patches): + markers = scan_repo_patches(repo_with_patches, "meta-rdk") + for m in markers: + assert m.component == "meta-rdk (patch)" + + def test_source_type_is_patch(self, repo_with_patches): + markers = scan_repo_patches(repo_with_patches, "test") + for m in markers: + assert m.source_type == "patch" + + def test_finds_script_apis_in_patches(self, repo_with_script_patches): + markers = scan_repo_patches(repo_with_script_patches, "test") + + names = {m.marker_name for m in markers} + assert "SCRIPT_NEW_MARKER" in names + assert "SCRIPT_COUNT" in names + + api_map = {m.marker_name: m.api for m in markers} + assert api_map["SCRIPT_NEW_MARKER"] == "t2ValNotify" + assert api_map["SCRIPT_COUNT"] == "t2CountNotify" + + def test_mixed_c_and_script_in_patch(self, repo_with_mixed_patches): + markers = scan_repo_patches(repo_with_mixed_patches, "test") + + names = {m.marker_name for m in markers} + assert "FLOAT_MARKER" in names + assert "MIXED_VAL" in names + + def test_empty_repo(self, tmp_path): + markers = scan_repo_patches(tmp_path, "empty") + assert markers == [] + + def test_line_numbers_positive(self, repo_with_patches): + markers = scan_repo_patches(repo_with_patches, "test") + for m in markers: + assert m.line > 0 diff --git a/tools/marker_discovery/tests/test_report_generator.py b/tools/marker_discovery/tests/test_report_generator.py new file mode 100755 index 00000000..a72cdff6 --- /dev/null +++ b/tools/marker_discovery/tests/test_report_generator.py @@ -0,0 +1,189 @@ +"""Tests for report_generator module — markdown output, sorting, duplicates.""" + +import pytest + +from tools.marker_discovery import MarkerRecord +from tools.marker_discovery.report_generator import generate_report, _find_duplicates + + +def _make_marker(name, component, file_path="src/test.c", line=1, api="t2_event_s", source_type="source"): + return MarkerRecord(name, component, file_path, line, api, source_type) + + +class TestDuplicateDetection: + def test_no_duplicates(self): + markers = [ + _make_marker("A", "repo1"), + _make_marker("B", "repo2"), + ] + dupes = _find_duplicates(markers) + assert len(dupes) == 0 + + def test_same_name_same_component_not_duplicate(self): + markers = [ + _make_marker("A", "repo1", "file1.c", 10), + _make_marker("A", "repo1", "file2.c", 20), + ] + dupes = _find_duplicates(markers) + assert len(dupes) == 0 + + def test_same_name_different_component_is_duplicate(self): + markers = [ + _make_marker("CPU_USAGE", "repo1", api="t2_event_f"), + _make_marker("CPU_USAGE", "repo2", api="t2_event_d"), + ] + dupes = _find_duplicates(markers) + assert "CPU_USAGE" in dupes + assert len(dupes["CPU_USAGE"]) == 2 + + +class TestReportGeneration: + def test_basic_report_structure(self): + markers = [_make_marker("BOOT_TIME", "dcm-agent", "src/dcm.c", 234, "t2_event_d")] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "# Telemetry Marker Inventory" in report + assert "**Branch**: develop" in report + assert "**Organizations**: rdkcentral" in report + assert "## Summary" in report + assert "**Total Markers**: 1" in report + assert "## Unique Marker Inventory" in report + assert "## Detailed Marker Inventory" in report + assert "BOOT_TIME" in report + assert "dcm-agent" in report + + def test_sorted_output(self): + markers = [ + _make_marker("ZEBRA", "repo1"), + _make_marker("ALPHA", "repo2"), + _make_marker("MIDDLE", "repo1"), + ] + report = generate_report(markers, "main", ["rdkcentral"], 5) + + alpha_pos = report.index("ALPHA") + middle_pos = report.index("MIDDLE") + zebra_pos = report.index("ZEBRA") + assert alpha_pos < middle_pos < zebra_pos + + def test_duplicates_flagged(self): + markers = [ + _make_marker("CPU_USAGE", "repo1", api="t2_event_f"), + _make_marker("CPU_USAGE", "repo2", api="t2_event_d"), + _make_marker("UNIQUE", "repo1"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "CPU_USAGE ⚠️" in report + assert "## Duplicate Markers" in report + assert "Found in 2 components" in report + + def test_no_duplicate_section_when_none(self): + markers = [_make_marker("A", "repo1"), _make_marker("B", "repo2")] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "## Duplicate Markers" not in report + + def test_empty_markers(self): + report = generate_report([], "develop", ["rdkcentral"], 0) + + assert "**Total Markers**: 0" in report + assert "## Duplicate Markers" not in report + + def test_multiple_orgs(self): + markers = [_make_marker("M", "repo1")] + report = generate_report(markers, "develop", ["rdkcentral", "rdk-e"], 20) + + assert "rdkcentral, rdk-e" in report + + def test_script_markers_in_report(self): + markers = [ + _make_marker("SCRIPT_M", "repo1", "scripts/run.sh", 5, "t2ValNotify", "script"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "t2ValNotify" in report + assert "SCRIPT_M" in report + + def test_patch_markers_in_report(self): + markers = [ + _make_marker("PATCH_M", "repo1 (patch)", "patches/fix.patch", 12, "t2_event_s", "patch"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "repo1 (patch)" in report + assert "PATCH_M" in report + + def test_dynamic_markers_separate_section(self): + markers = [ + _make_marker("CLEAN", "repo1", "src/main.sh", 1, "t2ValNotify", "script"), + _make_marker("SYST_ERR_$var", "repo2", "scripts/err.sh", 5, "t2ValNotify", "script_dynamic"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "## Dynamic Markers" in report + assert "SYST_ERR_$var" in report + # Static markers should be in inventory, dynamic should NOT + inventory_section = report.split("## Dynamic Markers")[0] + assert "CLEAN" in inventory_section + + def test_no_dynamic_section_when_none(self): + markers = [_make_marker("A", "repo1", source_type="script")] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "## Dynamic Markers" not in report + + def test_summary_shows_static_and_dynamic_counts(self): + markers = [ + _make_marker("STATIC1", "repo1", source_type="script"), + _make_marker("DYN_$x", "repo1", source_type="script_dynamic"), + _make_marker("DYN_$y", "repo2", source_type="script_dynamic"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "**Total Markers**: 3" in report + assert "**Static Markers**: 1" in report + assert "**Dynamic Markers**: 2" in report + + def test_duplicates_only_among_static(self): + markers = [ + _make_marker("SHARED", "repo1", source_type="source"), + _make_marker("SHARED", "repo2", source_type="source"), + _make_marker("DYN_$x", "repo3", source_type="script_dynamic"), + _make_marker("DYN_$x", "repo4", source_type="script_dynamic"), + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "## Duplicate Markers" in report + assert "SHARED" in report.split("## Duplicate Markers")[1] + # DYN_$x appears in 2 repos but should NOT be flagged as duplicate + # since dynamic markers are excluded from duplicate detection + dup_section = report.split("## Duplicate Markers")[1] + assert "DYN_$x" not in dup_section + + def test_unresolved_components_section(self): + markers = [_make_marker("A", "repo1")] + unresolved = [ + {"name": "missing-repo", "version": "1.0.0-r0", "reason": "Not found in any organization"}, + {"name": "broken-repo", "version": "2.0.0-r1", "reason": "Clone failed in rdkcentral"}, + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10, unresolved_components=unresolved) + + assert "## Unresolved Components" in report + assert "missing-repo" in report + assert "broken-repo" in report + assert "Not found in any organization" in report + + def test_no_unresolved_section_when_empty(self): + markers = [_make_marker("A", "repo1")] + report = generate_report(markers, "develop", ["rdkcentral"], 10) + + assert "## Unresolved Components" not in report + + def test_unresolved_count_in_summary(self): + markers = [_make_marker("A", "repo1")] + unresolved = [ + {"name": "missing", "version": "1.0", "reason": "Not found"}, + ] + report = generate_report(markers, "develop", ["rdkcentral"], 10, unresolved_components=unresolved) + + assert "**Unresolved Components**: 1" in report diff --git a/tools/marker_discovery/tests/test_script_parser.py b/tools/marker_discovery/tests/test_script_parser.py new file mode 100755 index 00000000..a6cda7d6 --- /dev/null +++ b/tools/marker_discovery/tests/test_script_parser.py @@ -0,0 +1,225 @@ +"""Tests for script_parser module — t2ValNotify/t2CountNotify extraction.""" + +import pytest + +from tools.marker_discovery.script_parser import ( + scan_repo_scripts, + _is_dynamic_marker, + _resolve_function_calls, +) + + +@pytest.fixture +def repo_with_scripts(tmp_path): + """Create a fake repo with script files containing marker calls.""" + scripts = tmp_path / "scripts" + scripts.mkdir() + + (scripts / "monitor.sh").write_text('''#!/bin/bash +# Monitor script +CPU=$(top -bn1 | grep "Cpu(s)") +t2ValNotify "CPU_USAGE_HIGH" "$CPU" +t2CountNotify "MONITOR_RUN_COUNT" 1 +echo "Done" +''') + + (scripts / "setup.py").write_text('''#!/usr/bin/env python3 +import os +# No markers in this file +print("setup done") +''') + + (scripts / "telemetry.sh").write_text('''#!/bin/bash +t2ValNotify "WIFI_STATUS" "connected" +t2ValNotify "BOOT_TIME" "$boot_secs" +''') + + return tmp_path + + +@pytest.fixture +def repo_with_c_files_only(tmp_path): + """Repo with only C files — script parser should find nothing.""" + src = tmp_path / "src" + src.mkdir() + + # This file has t2ValNotify but it's a .c file — should be skipped + (src / "wrapper.c").write_text(''' +void t2ValNotify(const char *marker, const char *val) { + t2_event_s(marker, val); +} +''') + return tmp_path + + +@pytest.fixture +def repo_with_mixed(tmp_path): + """Repo with both scripts and C files.""" + (tmp_path / "run.sh").write_text('t2CountNotify "SCRIPT_MARKER" 1\n') + src = tmp_path / "src" + src.mkdir() + (src / "main.c").write_text('t2_event_s("C_MARKER", "val");\n') + return tmp_path + + +@pytest.fixture +def repo_with_dynamic_markers(tmp_path): + """Repo with dynamic markers containing shell variables.""" + scripts = tmp_path / "scripts" + scripts.mkdir() + + (scripts / "dynamic.sh").write_text('''#!/bin/bash +t2ValNotify "SYST_ERR_CrashSig$2" "crash" +t2ValNotify "WIFIV_INFO_NO${version}ROUTE" "1" +t2CountNotify "SYST_ERR_$source_reboot" 1 +t2ValNotify "CLEAN_MARKER" "ok" +''') + + return tmp_path + + +@pytest.fixture +def repo_with_positional_resolution(tmp_path): + """Repo where a function uses $1 and is called with a literal.""" + scripts = tmp_path / "scripts" + scripts.mkdir() + + (scripts / "log.sh").write_text('''#!/bin/bash + +log_marker() { + t2ValNotify "$1" "$2" +} + +log_marker "RESOLVED_MEMORY" "512" +log_marker "RESOLVED_CPU" "75" +''') + + return tmp_path + + +class TestScriptParser: + def test_finds_val_and_count_notify(self, repo_with_scripts): + markers = scan_repo_scripts(repo_with_scripts, "test-repo") + + names = {m.marker_name for m in markers} + assert "CPU_USAGE_HIGH" in names + assert "MONITOR_RUN_COUNT" in names + assert "WIFI_STATUS" in names + assert "BOOT_TIME" in names + + def test_correct_api_names(self, repo_with_scripts): + markers = scan_repo_scripts(repo_with_scripts, "test-repo") + + api_map = {m.marker_name: m.api for m in markers} + assert api_map["CPU_USAGE_HIGH"] == "t2ValNotify" + assert api_map["MONITOR_RUN_COUNT"] == "t2CountNotify" + + def test_source_type_for_static_markers(self, repo_with_scripts): + markers = scan_repo_scripts(repo_with_scripts, "test") + static = [m for m in markers if m.source_type == "script"] + assert len(static) > 0 + for m in static: + assert "$" not in m.marker_name + + def test_skips_c_files(self, repo_with_c_files_only): + markers = scan_repo_scripts(repo_with_c_files_only, "test") + assert len(markers) == 0 + + def test_only_scans_non_c_files(self, repo_with_mixed): + markers = scan_repo_scripts(repo_with_mixed, "test") + names = {m.marker_name for m in markers} + assert "SCRIPT_MARKER" in names + assert "C_MARKER" not in names + + def test_empty_repo(self, tmp_path): + markers = scan_repo_scripts(tmp_path, "empty") + assert markers == [] + + def test_line_numbers(self, repo_with_scripts): + markers = scan_repo_scripts(repo_with_scripts, "test") + for m in markers: + assert m.line > 0 + + +class TestDynamicMarkers: + def test_is_dynamic_marker(self): + assert _is_dynamic_marker("SYST_ERR_CrashSig$2") + assert _is_dynamic_marker("WIFIV_INFO_NO${version}ROUTE") + assert _is_dynamic_marker("$1") + assert _is_dynamic_marker("$source_reboot") + assert not _is_dynamic_marker("CLEAN_MARKER") + assert not _is_dynamic_marker("CPU_USAGE_HIGH") + + def test_dynamic_markers_flagged(self, repo_with_dynamic_markers): + markers = scan_repo_scripts(repo_with_dynamic_markers, "test") + + dynamic = [m for m in markers if m.source_type == "script_dynamic"] + static = [m for m in markers if m.source_type == "script"] + + dynamic_names = {m.marker_name for m in dynamic} + static_names = {m.marker_name for m in static} + + assert "SYST_ERR_CrashSig$2" in dynamic_names + assert "WIFIV_INFO_NO${version}ROUTE" in dynamic_names + assert "SYST_ERR_$source_reboot" in dynamic_names + assert "CLEAN_MARKER" in static_names + + def test_positional_arg_resolution(self, repo_with_positional_resolution): + markers = scan_repo_scripts(repo_with_positional_resolution, "test") + + names = {m.marker_name for m in markers} + # $1 should be resolved to the literals from call sites + assert "RESOLVED_MEMORY" in names + assert "RESOLVED_CPU" in names + # The raw $1 should NOT appear since it was resolved + assert "$1" not in names + + def test_resolved_markers_have_wrapper_api(self, repo_with_positional_resolution): + markers = scan_repo_scripts(repo_with_positional_resolution, "test") + + for m in markers: + # Resolved markers should show function→api chain + assert "log_marker→t2ValNotify" in m.api + + def test_unresolvable_positional_stays_dynamic(self, tmp_path): + """If a function using $1 is never called with a literal, keep it as dynamic.""" + scripts = tmp_path / "scripts" + scripts.mkdir() + + (scripts / "orphan.sh").write_text('''#!/bin/bash +orphan_func() { + t2ValNotify "$1" "val" +} +''') + + markers = scan_repo_scripts(tmp_path, "test") + assert len(markers) == 1 + assert markers[0].marker_name == "$1" + assert markers[0].source_type == "script_dynamic" + + +class TestFunctionResolution: + def test_resolve_function_calls_basic(self): + content = '''#!/bin/bash +log_marker "HELLO" "world" +log_marker "GOODBYE" "!" +''' + resolved = _resolve_function_calls(content, "log_marker", 0) + assert "HELLO" in resolved + assert "GOODBYE" in resolved + + def test_resolve_function_calls_second_arg(self): + content = '''#!/bin/bash +send "prefix" "MARKER_TWO" +''' + resolved = _resolve_function_calls(content, "send", 1) + assert "MARKER_TWO" in resolved + + def test_resolve_skips_dynamic_values(self): + content = '''#!/bin/bash +log_marker "$VAR" "data" +log_marker "STATIC" "data" +''' + resolved = _resolve_function_calls(content, "log_marker", 0) + assert "STATIC" in resolved + assert "$VAR" not in resolved