# Business Logic — JKKSodSendCC.getMACAdress() [212 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKSodSendCC` |
| Layer | Common Component (CC) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKSodSendCC.getMACAdress()

This method retrieves MAC addresses for indoor equipment (宅内機器) from a remote service and maps them back to the service order information list. It operates as a bridge between the service order processing pipeline and the external equipment provisioning system. The method implements a **deduplicate-then-call** design pattern: it first consolidates service orders by their unique combination of indoor equipment model code and manufacturing serial number to minimize redundant service calls (an optimization introduced to fix an OutOfMemoryError in KKSV0193, per change log KT1-2013-0000268). It constructs a CAANMsg request via the `EKKA0020003CBSMsg` message type, invokes a service interface (`callSvcInter`), and then matches the returned MAC addresses back to the original service order entries. The method supports four distinct service types: **net** (broadband router), **tel** (voice/telephony), **mobile** (UQ mobile), and **ITS_TKNRT** (multi-functional router, value "FatBroadBandRouter"). For each service order entry, if a matching MAC address is found in the service response, it sets the corresponding MAC address field; if no match is found, it sets an empty string as a placeholder (added per change log 2013-03-04 to handle unset SOD fields). The method has no return value (`void`) — all results are written directly into the `svcOrderInfoList` map entries.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getMACAdress params"])
    START --> INIT["Initialize intensiveMap HashMap"]
    INIT --> LOOP1["Loop svcOrderInfoList"]
    LOOP1 --> CHECK_SVC["Check svcOrderInfo not null"]
    CHECK_SVC --> GET_FIELDS["Get taknkikiModelCd and kikiSeizoNo"]
    GET_FIELDS --> CHECK_FIELDS["Check both fields not null"]
    CHECK_FIELDS --> MAKE_KEY["Build tempKey from modelCd:kikiSeizoNo"]
    MAKE_KEY --> CHECK_MAP["Check intensiveMap does not contain tempKey"]
    CHECK_MAP --> CREATE_MSG["Create CAANMsg childTemplate"]
    CREATE_MSG --> SET_FIELDS["Set TK_MDL_CD and KK_SEIZO_NO"]
    SET_FIELDS --> PUT_MAP["Put childTemplate into intensiveMap"]
    PUT_MAP --> LOOP1_END["Next svcOrderInfo"]
    CHECK_SVC --> LOOP1_END
    CHECK_FIELDS --> LOOP1_END
    CHECK_MAP --> LOOP1_END
    LOOP1_END --> CHECK_SIZE["Check intensiveMap size > 0"]
    CHECK_SIZE --> EARLY_RET["Return if empty"]
    CHECK_SIZE --> CREATE_TEMPLATE["Create main CAANMsg template"]
    CREATE_TEMPLATE --> NULL_MAP["Apply null mapping to template"]
    NULL_MAP --> EDIT_BASIC["Call editInMsgBasicCmn"]
    EDIT_BASIC --> SET_TEMPLATE_ID["Set TEMPLATEID to EKKA0020003"]
    SET_TEMPLATE_ID --> SET_FUNC["Set FUNC_CODE to FUNC_CD_1"]
    SET_FUNC --> BUILD_ARRAY["Build templateArray from intensiveMap"]
    BUILD_ARRAY --> CALL_SVC["Call callSvcInter handle param fixedText"]
    CALL_SVC --> GET_RESULT["Get EKKA0020003CBSMSG2LIST from result"]
    GET_RESULT --> LOOP2["Loop svcOrderInfoList"]
    LOOP2 --> CHECK_SKIP["Check srcModelCd and srcKikiSeizoNo not null"]
    CHECK_SKIP --> SET_FALSE["Set isSet false"]
    SET_FALSE --> LOOP3["Loop templateArray"]
    LOOP3 --> GET_RET["Get retTkMdlCd retKkSeizoNo retMacAd"]
    GET_RET --> CHECK_MATCH["Check modelCd and kikiSeizoNo match"]
    CHECK_MATCH --> CHECK_SYURUI["Check syurui value"]
    CHECK_SYURUI --> SY_NET["syurui = net"]
    SY_NET --> SET_BBR["Set SOI_BBR_MACAD"]
    SET_BBR --> CHECK_YOKYU["Check OSI_YOKYU_SBT_CD = 02"]
    CHECK_YOKYU --> SET_NINSHO["Set SOI_BBR_NINSHO_KEY from retMacNinshoId"]
    SET_NINSHO --> SET_TRUE1["Set isSet true"]
    SY_NET --> SYTEL["syurui = tel"]
    SYTEL --> SET_VA["Set TSOI_VA_NINSHO_KEY and TSOI_VA_MACAD"]
    SET_VA --> SET_TRUE2["Set isSet true"]
    SY_NET --> SYMOB["syurui = mobile"]
    SYMOB --> SET_UQ["Set MOI_UQ_MACAD"]
    SET_UQ --> SET_TRUE3["Set isSet true"]
    SY_NET --> SYITS["syurui = FatBroadBandRouter"]
    SYITS --> SET_TAK["Set TAKINORT_NINSHO_KEY and TAKINORT_MACAD"]
    SET_TAK --> SET_TRUE4["Set isSet true"]
    CHECK_MATCH --> BREAK["Break inner loop"]
    SET_TRUE1 --> BREAK
    SET_TRUE2 --> BREAK
    SET_TRUE3 --> BREAK
    SET_TRUE4 --> BREAK
    BREAK --> LOOP3_END["Next templateArray"]
    LOOP3_END --> CHECK_SET["Check isSet false"]
    CHECK_SET --> SET_EMPTY["Set empty MACAD based on syurui"]
    SET_EMPTY --> LOOP2_END["Next svcOrderInfo"]
    CHECK_SKIP --> LOOP2_END
    CHECK_MATCH --> LOOP3_END
    SET_TRUE1 --> LOOP3_END
    CHECK_SET --> LOOP2_END
    LOOP2_END --> END_NODE(["End / Return"])
    EARLY_RET --> END_NODE
```

**Processing flow summary:**

1. **Deduplication phase**: Iterates over `svcOrderInfoList`, extracts equipment model codes and serial numbers, builds a deduplicated `intensiveMap` keyed by `modelCode:serialNumber` — ensuring each unique device is queried only once.
2. **Early exit guard**: If no valid equipment entries exist (`intensiveMap.size() <= 0`), returns immediately.
3. **Request construction**: Creates the main `EKKA0020003CBSMsg` template, applies null mapping, sets common fields (template ID "EKKA0020003", function code `FUNC_CD_1`), and populates the child message array from the deduplicated map.
4. **Service invocation**: Calls the remote service interface via `callSvcInter` with the populated template.
5. **Response mapping phase**: Iterates over the original `svcOrderInfoList` (preserving order), matches each entry against the response array by model code + serial number, and writes the returned MAC address (and optionally the authentication key) back into the service order map based on the `syurui` (service type) parameter.
6. **Unmatched fallback**: For entries that did not match any response row, sets empty string placeholders for the MAC address fields (added to handle unset SOD fields).

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying runtime context and read-write state for the current service order operation. Used for building the request message and extracting common fields via `editInMsgBasicCmn`. |
| 2 | `svcOrderInfoList` | `ArrayList<HashMap<String, Object>>` | List of service order information maps. Each map contains fields such as indoor equipment model code (`taknkiki_model_cd`), manufacturing serial number (`kiki_seizo_no`), and optional request type code (`yokyu_sbt_cd`). This is both the input (for device identification) and the output container (for MAC address results). |
| 3 | `handle` | `SessionHandle` | Database/session handle used for the service interface call. Provides the persistence context for `callSvcInter`. |
| 4 | `fixedText` | `String` | Fixed text parameter passed through to the service interface call. Likely used for error message localization or routing context in the downstream CBS. |
| 5 | `syurui` | `String` | Service type discriminator that determines which MAC address field to populate in the result. Valid values: `"net"` (broadband router), `"tel"` (voice/telephony), `"mobile"` (UQ mobile), `"FatBroadBandRouter"` (multi-functional router — constant `ITS_TKNRT`). |

**Internal state / constants used:**

| Source | Constant | Resolved Value | Business Meaning |
|--------|----------|----------------|------------------|
| `JKKSodSendConstCC` | `OSI_TAKNKIKI_MODEL_CD` | `"taknkiki_model_cd"` | Indoor equipment model code — identifies the type of indoor device |
| `JKKSodSendConstCC` | `OSI_KIKI_SEIZO_NO` | `"kiki_seizo_no"` | Equipment manufacturing serial number — unique device identifier |
| `JKKSodSendConstCC` | `OSI_YOKYU_SBT_CD` | `"yokyu_sbt_cd"` | Request type code — "02" triggers additional BBR authentication key retrieval |
| `JKKSodSendConstCC` | `SOI_BBR_MACAD` | `"bbr_macad"` | Service order field for broadband router MAC address |
| `JKKSodSendConstCC` | `SOI_BBR_NINSHO_KEY` | `"bbr_ninsho_key"` | Service order field for BBR authentication key |
| `JKKSodSendConstCC` | `TSOI_VA_MACAD` | `"va_macad"` | Service order field for voice authentication MAC address |
| `JKKSodSendConstCC` | `TSOI_VA_NINSHO_KEY` | `"va_ninsho_key"` | Service order field for voice authentication key |
| `JKKSodSendConstCC` | `MOI_UQ_MACAD` | `"uq_macad"` | Service order field for UQ mobile MAC address |
| `JKKSodSendConstCC` | `ITS_TKNRT` | `"FatBroadBandRouter"` | Multi-functional router service type identifier |
| `JKKSodSendReqConst` | `TAKINORT_MACAD` | `"takinort_macad"` | Request-side multi-functional router MAC address field |
| `JKKSodSendReqConst` | `TAKINORT_NINSHO_KEY` | `"takinort_ninsho_key"` | Request-side multi-functional router authentication key |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callSvcInter` | EKKA0020003 | — | Calls the external service interface `EKKA0020003` to retrieve MAC addresses for indoor equipment. This is the primary remote service call that queries the equipment provisioning system. |
| C | `editInMsgBasicCmn` | — | — | Sets common/standard fields on the input message template (shared initialization logic). |
| C | `editInMsgCmn` | — | — | Enriches the template with common message metadata before service invocation. |
| R | `CAANMsg.getContents` (EKKA0020003CBSMsg) | — | — | Reads the message content schema for null mapping configuration. |
| R | `CAANMsg.getContents` (EKKA0020003CBSMsg2List) | — | — | Reads the response message content schema to extract MAC address fields (`TK_MDL_CD`, `KK_SEIZO_NO`, `MAC_AD`, `MAC_NINSHO_ID`). |

**Note:** This method does not perform direct database CRUD operations (INSERT/UPDATE/SELECT/DELETE). Instead, it acts as a **service proxy** — constructing a request message, calling a CBS (CBS: Common Business Service) via `callSvcInter`, and mapping the response back to in-memory data structures. All data operations are mediated through the `EKKA0020003` CBS.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKSodSendCC | `executeSodSend` -> `getMACAdress` | `callSvcInter [R] EKKA0020003` |

**Detailed call chain:**
- `executeSodSend()` in `JKKSodSendCC` (same class) calls `getMACAdress()` as part of the broader SOD (Service Order Data) dispatch pipeline.
- The `executeSodSend` method separates service orders by type (net, tel, mobile, multi-functional router) and invokes `getMACAdress` for each category with the corresponding `syurui` parameter value.

**Terminal operations from this method:**
- `getString [R]` — EKKA0020003CBSMsg2List.TK_MDL_CD (return equipment model code)
- `getString [R]` — EKKA0020003CBSMsg2List.KK_SEIZO_NO (return equipment serial number)
- `getString [R]` — EKKA0020003CBSMsg2List.MAC_AD (return MAC address)
- `getString [R]` — EKKA0020003CBSMsg2List.MAC_NINSHO_ID (return authentication key)

## 6. Per-Branch Detail Blocks

**Block 1** — [FOR LOOP] `(svcOrderInfoList iteration for deduplication)` (L2653)

> Iterates over the service order info list to build a deduplicated map of indoor equipment. Each unique combination of equipment model code and manufacturing serial number is stored only once to prevent redundant service calls (OutOfMemoryError fix from 2013-03-01).

| # | Type | Code |
|---|------|------|
| 1 | SET | `intensiveMap = new HashMap<String, CAANMsg>()` |
| 2 | SET | `svcOrderInfo = svcOrderInfoList.get(i)` |
| 3 | IF | `null != svcOrderInfo && !svcOrderInfo.isEmpty()` [OK to proceed] |
| 4 | SET | `taknkikiModelCd = (String)svcOrderInfo.get(OSI_TAKNKIKI_MODEL_CD="taknkiki_model_cd")` |
| 5 | SET | `kikiSeizoNo = (String)svcOrderInfo.get(OSI_KIKI_SEIZO_NO="kiki_seizo_no")` |
| 6 | IF | `!isNull(taknkikiModelCd) && !isNull(kikiSeizoNo)` [Both fields must be populated] |
| 7 | SET | `tempKey = taknkikiModelCd + ":" + kikiSeizoNo` |
| 8 | IF | `!intensiveMap.containsKey(tempKey)` [Dedup guard: skip if already seen] |
| 9 | SET | `childTemplate = new CAANMsg(EKKA0020003CBSMsg1List.class.getName())` |
| 10 | SET | `childTemplate.set(KEY_TK_MDL_CD, convBlankToNull(taknkikiModelCd))` // Indoor equipment model code |
| 11 | SET | `childTemplate.set(KEY_KK_SEIZO_NO, convBlankToNull(kikiSeizoNo))` // Equipment manufacturing serial number |
| 12 | CALL | `intensiveMap.put(tempKey, childTemplate)` |

**Block 1.1** — [ELSE: empty intensiveMap] `(early exit)` (L2679)

> If no valid equipment entries were found, return immediately without calling the service interface.

| # | Type | Code |
|---|------|------|
| 1 | IF | `1 > intensiveMap.size()` [No entries to query] |
| 2 | RETURN | `return;` // Early exit — no indoor equipment to query |

**Block 2** — [REQUEST CONSTRUCTION] (L2685)

> Creates the main request message template for the EKKA0020003 service, configures common fields, and populates the child message array from the deduplicated equipment map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template = new CAANMsg(EKKA0020003CBSMsg.class.getName())` |
| 2 | CALL | `fillCAANMSGNullMapping(template, new EKKA0020003CBSMsg().getContents())` // Apply null mapping |
| 3 | CALL | `editInMsgBasicCmn(param, template)` // Set common fields |
| 4 | SET | `template.set(EKKA0020003CBSMsg.TEMPLATEID, "EKKA0020003")` // SIF template ID |
| 5 | SET | `template.set(EKKA0020003CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` // Function code |
| 6 | SET | `templateArray = new CAANMsg[intensiveMap.size()]` |
| 7 | SET | `p = 0` |
| 8 | FOR | `for (Entry<String, CAANMsg> e : intensiveMap.entrySet())` |
| 9 | SET | `templateArray[p++] = e.getValue()` |
| 10 | SET | `template.set(EKKA0020003CBSMsg.EKKA0020003CBSMSG1LIST, templateArray)` |

**Block 3** — [SERVICE INVOCATION] (L2699)

> Calls the remote service interface to retrieve MAC addresses, then extracts the response array.

| # | Type | Code |
|---|------|------|
| 1 | SET | `result = callSvcInter(handle, param, fixedText, editInMsgCmn(param, template))` |
| 2 | SET | `templateArray = result.getCAANMsgList(EKKA0020003CBSMsg.EKKA0020003CBSMSG2LIST)` |

**Block 4** — [FOR LOOP] `(svcOrderInfoList iteration for response mapping)` (L2713)

> Iterates over the original service order list and matches each entry against the response. Writes MAC addresses back to the source maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcOrderInfo = svcOrderInfoList.get(i)` |
| 2 | SET | `srcTaknkikiModelCd = (String)svcOrderInfo.get(OSI_TAKNKIKI_MODEL_CD="taknkiki_model_cd")` |
| 3 | SET | `srcKikiSeizoNo = (String)svcOrderInfo.get(OSI_KIKI_SEIZO_NO="kiki_seizo_no")` |
| 4 | IF | `null == srcTaknkikiModelCd || null == srcKikiSeizoNo` |
| 5 | EXEC | `continue;` // Skip entries without both fields |
| 6 | SET | `isSet = false` // 2013-03-04 addition — fallback flag for unset SOD fields |
| 7 | FOR | `for (j=0; j < templateArray.length; j++)` |
| 8 | SET | `childTemplate = templateArray[j]` |
| 9 | SET | `retTkMdlCd = childTemplate.getString(EKKA0020003CBSMsg2List.TK_MDL_CD)` |
| 10 | SET | `retKkSeizoNo = childTemplate.getString(EKKA0020003CBSMsg2List.KK_SEIZO_NO)` |
| 11 | SET | `retMacAd = childTemplate.getString(EKKA0020003CBSMsg2List.MAC_AD)` |

**Block 4.1** — [IF] `(model code and serial number match)` (L2725)

> When a response entry matches the source entry by both equipment model code and serial number, set the appropriate MAC address based on the service type.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != retTkMdlCd && retTkMdlCd.equals(srcTaknkikiModelCd) && null != retKkSeizoNo && retKkSeizoNo.equals(srcKikiSeizoNo)` |
| 2 | IF | `syurui equals "net"` [Broadband router service type] |

**Block 4.1.1** — [NET branch] `(syurui = "net")` (L2730)

> Sets the broadband router MAC address and, if the request type is "02" (additional registration), also sets the BBR authentication key.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcOrderInfo.put(SOI_BBR_MACAD="bbr_macad", retMacAd)` |
| 2 | IF | `svcOrderInfo.get(OSI_YOKYU_SBT_CD="yokyu_sbt_cd").toString() equals "02"` [Additional registration request — IT1-2013-0000703, BBR authentication key set only on registration] |
| 3 | SET | `retMacNinshoId = childTemplate.getString(EKKA0020003CBSMsg2List.MAC_NINSHO_ID)` |
| 4 | SET | `svcOrderInfo.put(SOI_BBR_NINSHO_KEY="bbr_ninsho_key", retMacNinshoId)` |
| 5 | SET | `isSet = true` |

**Block 4.1.2** — [TEL branch] `(syurui = "tel")` (L2741)

> Sets the voice/telephony MAC address and authentication key.

| # | Type | Code |
|---|------|------|
| 1 | SET | `retVaNinshoId = childTemplate.getString(EKKA0020003CBSMsg2List.MAC_NINSHO_ID)` // Voice authentication ID |
| 2 | SET | `svcOrderInfo.put(TSOI_VA_NINSHO_KEY="va_ninsho_key", retVaNinshoId)` |
| 3 | SET | `svcOrderInfo.put(TSOI_VA_MACAD="va_macad", retMacAd)` |
| 4 | SET | `isSet = true` |

**Block 4.1.3** — [MOBILE branch] `(syurui = "mobile")` (L2748)

> Sets the UQ mobile MAC address only.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcOrderInfo.put(MOI_UQ_MACAD="uq_macad", retMacAd)` |
| 2 | SET | `isSet = true` |

**Block 4.1.4** — [ITS_TKNRT branch] `(syurui = "FatBroadBandRouter")` (L2754)

> Sets the multi-functional router MAC address and authentication key. Added by ANK-1578-00-00 (multi-functional router support).

| # | Type | Code |
|---|------|------|
| 1 | SET | `retNinshoId = childTemplate.getString(EKKA0020003CBSMsg2List.MAC_NINSHO_ID)` |
| 2 | SET | `svcOrderInfo.put(TAKINORT_NINSHO_KEY="takinort_ninsho_key", retNinshoId)` |
| 3 | SET | `svcOrderInfo.put(TAKINORT_MACAD="takinort_macad", retMacAd)` |
| 4 | SET | `isSet = true` |

**Block 4.1.5** — [BREAK] (L2760)

> Breaks out of the templateArray loop once a match is found.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `break;` |

**Block 4.2** — [ELSE: isSet == false] `(fallback for unmatched entries)` (L2763)

> If no matching response entry was found for this service order (isSet is still false), set empty strings as placeholders for the MAC address fields. This was added on 2013-03-04 to handle unset SOD fields.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isSet` [No match found in response] |
| 2 | IF | `syurui equals "net"` [Broadband router — set empty MACAD and NINSHO_KEY] |
| 3 | SET | `svcOrderInfo.put(SOI_BBR_MACAD="bbr_macad", "")` |
| 4 | SET | `svcOrderInfo.put(SOI_BBR_NINSHO_KEY="bbr_ninsho_key", "")` |
| 5 | IF | `syurui equals "tel"` [Voice — set empty MACAD] |
| 6 | SET | `svcOrderInfo.put(TSOI_VA_MACAD="va_macad", "")` |
| 7 | IF | `syurui equals "mobile"` [Mobile — set empty MACAD] |
| 8 | SET | `svcOrderInfo.put(MOI_UQ_MACAD="uq_macad", "")` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `taknkiki_model_cd` | Field | Indoor equipment model code — identifies the type/model of the indoor network device (e.g., broadband router, multi-functional router) |
| `kiki_seizo_no` | Field | Equipment manufacturing serial number — unique hardware serial number for the indoor device |
| `bbr_macad` | Field | Broadband router MAC address — the physical layer address of the broadband router |
| `bbr_ninsho_key` | Field | BBR authentication key — authentication credential for the broadband router, set only when request type is "02" (additional registration) |
| `va_macad` | Field | Voice Authentication MAC address — MAC address used for voice/telephony service authentication |
| `va_ninsho_key` | Field | Voice Authentication ID — authentication credential for the voice service |
| `uq_macad` | Field | UQ MAC address — MAC address for UQ mobile service equipment |
| `takinort_macad` | Field | Multi-functional router MAC address — MAC address for the combined router/voice/MAC device |
| `takinort_ninsho_key` | Field | Multi-functional router authentication key — authentication credential for the multi-functional router |
| `yokyu_sbt_cd` | Field | Request type code — classifies the type of service request; value "02" indicates an additional registration request that requires BBR authentication key |
| `svc_order_cd` | Field | Service order code — unique identifier for the service order |
| `svc_kei_no` | Field | Service contract number — the main service contract identifier |
| `svc_kei_ucwk_no` | Field | Service contract detail work number — internal tracking ID for service contract line items |
| SOD | Acronym | Service Order Data — the core telecom order fulfillment entity containing service order information |
| SIF | Acronym | Service Interface Framework — the messaging framework used for CBS (Common Business Service) communication |
| CBS | Acronym | Common Business Service — a shared service component that handles specific business logic |
| CAANMsg | Technical | Fujitsu's message envelope class used for structuring request/response data between service layers |
| KKSV | Acronym | K-Opticom Service Validation — screen/batch naming prefix (e.g., KKSV0193, KKSV0004) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service |
| PPPoE | Acronym | Point-to-Point Protocol over Ethernet — a network protocol for broadband connections |
| UQ | Business term | UQ Communications — a Japanese mobile/carrier brand offering mobile broadband services |
| BBR | Acronym | Broadband Router — the residential network routing device provided by K-Opticom |
| MAC | Acronym | Media Access Control — unique hardware identifier for network interfaces |
| FUNC_CD_1 | Constant | Function code value "1" — generic function type code used in SIF messages |
| EKKA0020003 | CBS Code | Service interface for indoor equipment MAC address retrieval — the CBS called to query equipment MAC addresses |
| ITS_TKNRT | Constant | Service type value "FatBroadBandRouter" — identifier for multi-functional router service type |
