新四季網

Oam協議棧編碼方法及系統的製作方法

2023-06-25 08:15:46

Oam協議棧編碼方法及系統的製作方法
【專利摘要】本發明提供一種OAM協議棧編碼方法。所述OAM協議棧編碼方法包括:設置對象定義模塊;根據所述對象定義模板對OAM對象進行定義OAM對象相關屬性值;根據定義的所述OAM對象相關屬性值生成OAM協議棧相關的代碼。所述OAM協議棧相關的代碼包括:協議棧公用函數源碼、協議棧對象的設置函數代碼、以及協議棧對象的取值函數代碼。本發明的技術方案能夠自動實現部分OAM協議棧相關代碼的自動生成,不僅大大提供了代碼的書寫效率,縮短了項目開發周期,而且自動生成的代碼的準確性、清晰性也得到了增強,為後期的二次開發及維護提供了極大的便利。
【專利說明】OAM協議棧編碼方法及系統

【技術領域】
[0001] 本發明涉及一種協議編碼,特別是涉及一種0ΑΜ協議編碼方法及系統。

【背景技術】
[0002] 在通信系統中,協議棧的開發一直是軟體工程師的一個繁重的工作任務。由於協 議棧的特殊性,不可避免的會有很多重複性的代碼需要書寫,這極大的增加了軟體工程師 的工作量,常常因此而拉長了項目的開發周期,增加項目的開發難度。
[0003] 在 EPON(Ethernet Passive Optical Network,乙太網無源光網絡)系統中, ONU (Optical Network Unit,光網絡單兀)通過 0AM (Operation Administation and Maintenance,操作、管理和維護)註冊發現機制,註冊到0LT(Optical Line Terminal,光線 路終端),此時如果〇LT認定0NU身份合法有效,則0NU上線。0LT可以管理上線的0NU,包 括對0NU進行軟體升級、動態帶寬分配等操作,但其中最重要的是業務的下發和狀態信息 的監控讀取等操作。通常業務的下發和狀態信息的監控讀取等操作需要都通過0ΑΜ對象的 屬性設置和取值操作來完成。由於ΕΡ0Ν系統中需要大量使用0ΑΜ協議棧,從而使得在ΕΡ0Ν 系統中0ΑΜ協議棧編寫的工作量巨大。
[0004] 鑑於此,如何在滿足0ΑΜ協議棧功能實現的基礎上,降低0ΑΜ協議棧的編碼工作 量,成為本領域技術人員亟待解決的問題。


【發明內容】

[0005] 鑑於以上所述現有技術的缺點,本發明的目的在於提供一種0ΑΜ協議棧編碼方法 及系統,用於解決現有技術中0ΑΜ協議棧開發的工作量巨大,代碼書寫效率低且開發的代 碼不便於後續維護的問題。
[0006] 為實現上述目的及其他相關目的,本發明提供一種0ΑΜ協議棧編碼方法。所述0ΑΜ 協議棧編碼方法包括:設置對象定義模塊;根據所述對象定義模板對0ΑΜ對象進行定義0ΑΜ 對象相關屬性值;根據定義的所述0ΑΜ對象相關屬性值生成0ΑΜ協議棧相關的代碼。
[0007] 可選地,所述對象定義模板包括:對對象的全局屬性以及對象的參數的定義;所 述對象的全局屬性包括:對象的名稱、對象Branch值、以及對象Leaf值;所述對象的參數 屬性包括:參數的名稱、參數的數據類型、以及參數在內存中佔用的長度。
[0008] 可選地,所述0ΑΜ協議棧相關的代碼包括:協議棧公用函數源碼;所述協議棧公用 函數源碼包括協議棧對象的結構體;所述結構體代碼的生成是根據每一個所述0ΑΜ對象定 義生成一個結構體實例
[0009] 可選地,所述0ΑΜ協議棧相關的代碼包括:協議棧公用函數源碼;所述協議棧公用 函數源碼包括協議棧對象的結構體數組聲明、以及取對象數函數;所述結構體數組聲明代 碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實例,所有的所述結構體實例組 成結構體數組聲明;所述取對象數函數返回所述結構體數組中的對象數目。
[0010] 可選地,所述根據每一個所述0ΑΜ對象定義生成一個結構體的具體實現包括:根 據所述對象的名稱、所述對象Branch值、對象Leaf值生成一個結構體實例;所述結構體實 例包括相應對象的Branch、Leaf、設置函數、以及取值函數。
[0011] 可選地,所述0ΑΜ協議棧相關的代碼包括:協議棧對象的設置函數代碼;所述設置 函數輸入的參數包括回復報文內存指針、設置報文有效數據欄位指針、以及對象實例號;所 述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:設置消息ID、設 置消息結構體、手動設置標記以及目的進程ID ;當所述0ΑΜ對象的手動設置標識不為預設 的手動設置標識時,生成的所述設置函數代碼包括:根據所述設置報文有效數據欄位指針 獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對象的 設置消息結構體中;根據所述0ΑΜ對象的設置消息ID、設置消息結構體以及目的進程ID生 成設置消息發送給目標進程;根據所述目標進程的設置回復消息確定設置回復碼;將所述 0ΑΜ對象的Branch值、Leaf值以及所述設置回復碼填寫到所述回復報文內存指針確定的相 應位置。
[0012] 可選地,當所述0ΑΜ對象的對象手動設置標識為預設的手動設置標識時,則生成 的所述設置函數為空函數,此時所述設置函數需人工處理。
[0013] 可選地,所述0ΑΜ協議棧相關的代碼包括:協議棧對象的取值函數代碼;所述取值 函數輸入的參數包括回復報文內存指針、取值報文有效數據欄位指針、以及對象實例號;所 述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:取值消息ID、取值 消息結構體、手動取值標記以及目的進程ID ;當所述0ΑΜ對象的手動取值標識為預設的手 動取值標識時,生成的所述取值函數代碼包括:根據所述0ΑΜ對象的取值消息ID、取值消息 結構體以及目的進程ID生成取值消息發送給目標進程;根據所述目標進程的取值回復消 息獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象Branch值、Leaf值以及所獲取的所 述0ΑΜ對象的相應屬性值填充到所述回復報文內存指針確定的相應位置。
[0014] 可選地,所當所述0ΑΜ對象的對象手動取值標識為預設的手動取值標識時,則生 成的所述取值函數為空函數,此時所述設置函數需人工處理。
[0015] 本發明還提供一種0ΑΜ協議棧編碼系統。所述0ΑΜ協議棧編碼系統包括:模板定 義模塊,用於設置對象定義模塊;對象定義模塊,與所述模板定義模塊相連,用於根據所述 對象定義模板對0ΑΜ對象進行定義0ΑΜ對象相關屬性值;代碼生成模塊,與所述對象定義模 塊相連,用於根據定義的所述0ΑΜ對象相關屬性值生成0ΑΜ協議棧相關的代碼。
[0016] 可選地,所述模板定義模塊中的所述對象定義模板包括:對對象的全局屬性以及 對象的參數的定義;所述對象的全局屬性包括:對象的名稱、對象Branch值、以及對象Leaf 值;所述對象的參數屬性包括:參數的名稱、參數的數據類型、以及參數在內存中佔用的長 度。
[0017] 可選地,所述代碼生成模塊中的所述0ΑΜ協議棧相關的代碼包括:協議棧公用函 數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體數組聲明、以及取對象函數; 所述結構體數組聲明代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實例,所 有的所述結構體實例組成結構體數組聲明;所述取對象函數返回所述結構體數組中的對象 數目。
[0018] 可選地,所述代碼生成模塊中的所述0ΑΜ協議棧相關的代碼包括:協議棧公用函 數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體;所述結構體代碼的生成是根 據每一個所述OAM對象定義生成一個結構體實例。
[0019] 可選地,所述結構體實例包括相應對象的BrancKLeaf、設置函數、以及取值函數; 所述代碼生成模塊中的所述0ΑΜ協議棧相關的代碼包括:協議棧對象的設置函數代碼;所 述設置函數輸入的參數包括回復報文內存指針、設置報文有效數據欄位指針、以及對象實 例號;所述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:設置消息 ID、設置消息結構體、手動設置標記以及目的進程ID ;當所述0ΑΜ對象的手動設置標識不為 預設的手動設置標識時,生成的所述設置函數代碼包括:根據所述設置報文有效數據欄位 指針獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對 象的設置消息結構體中;根據所述0ΑΜ對象的設置消息ID、設置消息結構體以及目的進程 ID生成設置消息發送給目標進程;根據所述目標進程的設置回復消息確定設置回復碼;將 所述0ΑΜ對象的Branch值、Leaf值以及所述設置回復碼填寫到所述回復報文內存指針確 定的相應位置。
[0020] 可選地,所述結構體實例包括相應對象的BrancKLeaf、設置函數、以及取值函數; 所述代碼生成模塊中的所述0ΑΜ協議棧相關的代碼包括:協議棧對象的取值函數代碼;所 述取值函數輸入的參數包括回復報文內存指針、取值報文有效數據欄位指針、以及對象實 例號;所述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:取值消息 ID、取值消息結構體、手動取值標記以及目的進程ID ;當所述0ΑΜ對象的手動取值標識為預 設的手動取值標識時,生成的所述取值函數代碼包括:根據所述0ΑΜ對象的取值消息ID、取 值消息結構體以及目的進程ID生成取值消息發送給目標進程;根據所述目標進程的取值 回復消息獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象Branch值、Leaf值以及所獲 取的所述0ΑΜ對象的相應屬性值填充到所述回復報文內存指針確定的相應位置。
[0021] 如上所述,本發明的一種0ΑΜ協議棧編碼方法及系統,具有以下有益效果:能夠自 動實現部分0ΑΜ協議棧相關代碼的自動生成,不僅大大提供了代碼的書寫效率,縮短了項 目開發周期,而且自動生成的代碼的準確性、清晰性也得到了增強,為後期的二次開發及維 護提供了極大的便利。

【專利附圖】

【附圖說明】
[0022] 圖1顯示為本發明的一種0ΑΜ協議棧編碼方法的一實施例的方法流程示意圖。
[0023] 圖2顯示為本發明的一種0ΑΜ協議棧編碼方法的一實施例的方法流程示意圖。
[0024] 圖3顯示為本發明的一種0ΑΜ協議棧編碼方法的一實施例的方法流程示意圖。
[0025] 圖4顯不為本發明的一種0ΑΜ協議棧編碼系統的一實施例的模塊結構不意圖。
[0026] 元件標號說明
[0027] 1 0ΑΜ協議棧編碼系統
[0028] 11 模板定義模塊
[0029] 12 對象定義模塊
[0030] 13 代碼生成模塊
[0031] S1 ?S3 步驟

【具體實施方式】
[0032] 以下通過特定的具體實例說明本發明的實施方式,本領域技術人員可由本說明書 所揭露的內容輕易地了解本發明的其他優點與功效。本發明還可以通過另外不同的具體實 施方式加以實施或應用,本說明書中的各項細節也可以基於不同觀點與應用,在沒有背離 本發明的精神下進行各種修飾或改變。
[0033] 需要說明的是,本實施例中所提供的圖示僅以示意方式說明本發明的基本構想, 遂圖式中僅顯示與本發明中有關的組件而非按照實際實施時的組件數目、形狀及尺寸繪 制,其實際實施時各組件的型態、數量及比例可為一種隨意的改變,且其組件布局型態也可 能更為複雜。
[0034] 為實現上述目的及其他相關目的,本發明提供一種0ΑΜ協議棧編碼方法。如圖1 所示,在一個實施例中,所述0ΑΜ協議棧編碼方法包括:
[0035] 步驟S1,設置對象定義模塊。具體地,所述對象定義模板包括:對對象的全局 屬性以及對象的參數的定義;所述對象的全局屬性包括:對象的名稱(objectName)、對 象Branch值(Branch)、以及對象Leaf值(Leaf);所述對象的參數屬性包括:參數的名 稱(varlname)、參數的數據類型(dataType)、以及參數在內存中佔用的長度(len)。在 一個實施例中,所述對象的全局屬性還包括:設置消息ID(setM SgId)、設置消息結構體 (setStruct)、手動設置標記(setspechandler)、取值消息ID(getMsgld)、取值消息結構體 (getStruct)、手動取值標記(getspechandler)以及目的進程 ID(APPL_ID)。
[0036] 在一個實施例中,所述對象定義模板具體如下所示:
[0037] OBJECT-START SETOBJECT objectName Branch Leaf APPLTD setMsgld setStruct getMsgld getStruct getspechandler setspechandler SET-OBJECT-VARIABLE varlname len dataType 0BJECT_END
[0038] 其中:
[0039] OBJECT_START:對象定義起始腳本進程調用 SETJ)BJFCT:對象特徵定義腳本進程調用 objectName:對象特徵定義中的對象名稱 Branch:對象特徵定義中的枝節點值 Leaf:對象特徵定義中的葉節點值 APPL+ID:對象特徵定義中的發送消息目的進程ID setMsgld:對象特徵定義中的發送設置消息ID setStruct:對象特徵定義中的發送設置消息結構體 getMsgld:對象特徵定義中的發送取值消息ID getStruct:對象特徵定義中的發送取值消息結構體 getspechandler:對象特徵定義中的是否需要調用手動書寫的取值函數 setspechandler:對象特徵定義中的是否需要調用手動書寫的設置函數 SETLOBJECTJARIABLE:對象屬性定義腳本進程調用,若是多屬性,則每個屬性依次調用 varlname:對象屬性定義中的屬性名稱 len:對象屬性定義中的屬性值在OAM報文中的佔用長度 dataType:對象屬性定義中的屬性數據類型 OBJECT+END:對象定義完結腳本進程調用
[0040] 步驟S2,根據所述對象定義模板對0ΑΜ對象進行定義0ΑΜ對象相關屬性值。具體 地,根據IEEE802. 3規範標準列出的0ΑΜ對象,遵照所述對象定義模板對所述0ΑΜ對象相 關屬性值進行定義。具體地,所述參數屬性SET_OBJECT_VARIALBE對參數的定義取決於協 議規範標準,可以包括1個參數或多個參數的情況。在特殊情況下,也可以為空,即沒有參 數的情況。在一個實施例中,如0ΑΜ協議操作對象aFECmode,它在規範標準中由Branch值 和Leaf值唯一確定它的身份;而且有一個參數屬性fecmode,數據類型是無符號整型。那 麼,遵照所述對象定義模板對所述0ΑΜ協議操作對象aFECmode對象相關屬性的定義如下所 示:
[0041] OBJECT-START SETJ3BJECT aFECmode 0x07 0x013A APPL_EP0N MSG_ID_EP0N_P0RT_SET_fecMode MSG_STRUCT_EPON_PORT_fecMode_SET MSG-ID-ΕΡ0Ν-PORT-GET-fecMode MSG_STRUCT_EP0N_P0RT_fecMode_GET getspechandler setspechandler SET-OBJECT-VARIABLE fecMode 4 0AM-TYPE-UINT32 OBJECT-END
[0042] 需要注意的是,如MSG_ID_EP0N_P0RT_SET_fecMode (設置消息ID)是根據0AM協 議棧實際應用的系統確定的,並不屬於協議規範標準的內容。當0AM對象屬性在我們實際 應用的系統中存在對應的設置消息ID時,即意味著存在系統操作接口,此時,我們需要使 用該設置消息ID。反之,如果系統中不存在對應的設置消息ID,則我們僅需要保留模板中 的"setMsgld"關鍵字即可。其他相關屬性值的處理也類似,如果所述屬性值在系統中有對 應的相關值,則取其值;否則,保留模板中的關鍵字。在一個實施例中,所述參數屬性可以為 空,此時表示該0ΑΜ對象不存在參數變量。
[0043] 步驟S3,根據定義的所述0ΑΜ對象相關屬性值生成0ΑΜ協議棧相關的代碼。在一 個實施例中,所述0ΑΜ協議棧相關的代碼包括:協議棧公用函數源碼;所述協議棧公用函 數源碼包括協議棧對象的結構體;所述結構體代碼的生成是根據每一個所述0ΑΜ對象定義 生成一個結構體實例。在一個實施例中,所述0ΑΜ協議棧相關的代碼包括:協議棧公用函 數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體數組聲明、以及取對象數函數; 所述結構體數組聲明代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實例,所 有的所述結構體實例組成結構體數組聲明;所述取對象數函數返回所述結構體數組中的對 象數目。在一個實施例中,實現該方法的代碼生成腳本通過讀取步驟2所定義的所述0ΑΜ 對象相關屬性值,並進行處理。對每一個所述0ΑΜ對象進行處理,所述處理包括:讀取到 " OB JECT_START "時,完成一些全局腳本變量的初始化。讀取到" SET_0B JECT "時,將讀取的其 後面的相關全局變量屬性值保留到相應的全局變量中。讀取到"SET_OBJECT_VARIABLE"時, 將讀取的其後面的相關參數變量屬性值保留到相應的全局變量中。讀取到"〇BJECT_END" 時,說明一個完整的對象定義已經執行完畢,生成代碼所需的全局變量賦值已經完成。通過 這種方式或者類似的方式,同時可以將每一個所述0ΑΜ對象定義生成一個結構體實例。在 一個實施例中,代碼生成腳本根據所述0ΑΜ對象的對象名稱、所述對象Branch值、對象Leaf 值生成一個結構體實例;所述結構體實例包括相應對象的Branch、Leaf、設置函數、以及取 值函數。每個定義的所述0ΑΜ對象相關屬性值對應的生成了一個結構體實例,所有的這些 結構體實例構成了結構體數據。所述取對象數函數返回所述結構體數組中的結構體對象數 目,這可以簡單的統計生成了結構體實例數目實現,也可以通過將所述結構體數組的長度 除以單個結構體長度得到。在一個實施例中,所述代碼生成腳本是通過TCL腳本實現的。
[0044] 在一個實施例中,所述0ΑΜ協議棧相關的代碼還包括:協議棧對象的設置函數代 碼。具體地,設置函數代碼的生成可以在讀取到"〇BJECT_END"時,生成代碼所需的全局變 量賦值已經完成時執行的。所述設置函數輸入的參數包括回復報文內存指針、回復報文內 存位移、設置報文有效數據欄位指針、以及對象實例號;其中,所述對象實例號用於確定所 述0ΑΜ對象。在一個實施例中,針對每一個0ΑΜ對象都生成一個設置函數代碼,所有的設置 函數代碼生成後可以保存在對象私有設置函數接口源文件中。
[0045] 所述0ΑΜ對象的全局屬性還包括:設置消息ID、設置消息結構體、手動設置標記以 及目的進程ID。在生成協議棧對象的設置函數代碼時,代碼生成腳本首先判斷所述0ΑΜ對 象的手動設置標識是否為預設的手動設置標識(預設的手動設置標識可以默認為該屬性 關鍵字setspechandler)。如果所述0ΑΜ對象的手動設置標識為預設的手動設置標識,則說 明該0ΑΜ對象的設置函數需要人工處理,此時,生成的所述0ΑΜ對象的設置函數為空函數。 當所述0ΑΜ對象的手動設置標識不為預設的手動設置標識時,生成的所述設置函數代碼包 括:首先判斷所述設置消息ID是否有效,如果有效,則根據所述設置報文有效數據欄位指 針獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對象 的設置消息結構體中。當所述屬性值為多個時,將依次所述設置報文有效數據欄位指針獲 取所述0ΑΜ對象的相應屬性值(即根據對象屬性順序及屬性對應的在報文中的長度循環解 析所述設置報文的有效數據欄位獲取所述屬性值),並將所述0ΑΜ對象的相應屬性值填寫 到所述0ΑΜ對象的設置消息結構體中。根據所述0ΑΜ對象的設置消息ID、設置消息結構體 以及目的進程ID生成設置消息發送給目標進程;根據所述目標進程的設置回復消息確定 設置回復碼;將所述OAM對象的Branch值、Leaf值以及所述設置回復碼填寫到所述回復報 文內存指針確定的相應位置。如果所述設置消息ID無效,則不進行獲取屬性的操作,直接 將所述0ΑΜ對象的Branch值、Leaf值以及無效返回碼填寫到所述回復報文內存指針確定 的相應位置。所述設置函數還可以包括發送所述回復報文(通常為0ΑΜ報文)。當所述設 置消息ID無效時,回復帶無效返回碼的0ΑΜ報文;當所述設置消息ID有效時,正確回復0ΑΜ 報文。在一個實施例中,所述代碼生成腳本是通過TCL腳本實現的。
[0046] 在一個實施例中,所述0ΑΜ協議棧相關的代碼還包括:協議棧對象的取值函數代 碼。具體地,取值函數代碼的生成可以在讀取到"〇BJECT_END"時,生成代碼所需的全局變 量賦值已經完成時執行的。所述取值函數輸入的參數包括回復報文內存指針、回復報文內 存位移、取值報文有效數據欄位指針、以及對象實例號。其中,所述對象實例號用於確定所 述0ΑΜ對象。在一個實施例中,針對每一個0ΑΜ對象都生成一個取值函數代碼,所有的取值 函數代碼生成後可以保存在對象私有取值函數接口源文件中。
[0047] 所述0ΑΜ對象的全局屬性還包括:取值消息ID、取值消息結構體、手動取值標記以 及目的進程ID。在生成協議棧對象的取值函數代碼時,代碼生成腳本首先判斷所述0ΑΜ對 象的手動取值標識是否為預設的手動取值標識(預設的手動取值標識可以默認為該屬性 關鍵字getspechandler)。如果所述0ΑΜ對象的手動取值標識為預設的手動取值標識,則 說明該0ΑΜ對象的取值函數需要人工處理,此時,生成的所述0ΑΜ對象的取值函數為空函 數。當所述0ΑΜ對象的手動取值標識為預設的手動取值標識時,生成的所述取值函數代碼 包括:判斷所述取值消息ID是否有效,如果有效,則根據所述0ΑΜ對象的取值消息ID、取值 消息結構體以及目的進程ID生成取值消息發送給目標進程;根據所述目標進程的取值回 復消息獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象Branch值、Leaf值以及所獲取 的所述0ΑΜ對象的相應屬性值填充到所述回復報文內存指針確定的相應位置。如果所述取 值消息ID無效,則不進行獲取屬性的操作,直接將所述0ΑΜ對象的Branch值、Leaf值以及 無效返回碼填寫到所述回復報文內存指針確定的相應位置。所述取值函數還可以包括發送 所述回復報文(通常為0ΑΜ報文)。當所述取值消息回復帶無效返回碼的0ΑΜ報文;當所 述取值消息ID有效時,正確回復帶參數內容的0ΑΜ報文。在一個實施例中,所述代碼生成 腳本是通過TCL腳本實現的。
[0048] 在一個實施例中,如圖2所示,所述0ΑΜ協議棧編碼方法包括生成設置函數代碼。 首先,在對象定義腳本中根據預設的對象定義模板定義協議中的0ΑΜ對象。然後,將對象定 義腳本導入到功能實現腳本(即代碼生成腳本)。在功能實現腳本中,首先根據所述0ΑΜ 對象的手動設置標識判斷是否需要手動處理,如果答案為YES,則需要手動處理設置函數代 碼。如果答案為No,此時,先通過設置消息ID判斷設置消息是否有效(通過判斷設置消息 ID是否有效判斷),如果答案為YES,則對設置消息報文進行解析,獲取所述0ΑΜ對象的相應 屬性值,並填寫到所述0ΑΜ對象的設置消息結構體中,根據所述0ΑΜ對象的設置消息ID、設 置消息結構體以及目的進程ID生成設置消息發送給目標進程,根據所述目標進程的設置 回復消息確定設置回復碼。根據設置回復碼填寫正確的0ΑΜ報文並回復。如果答案為No, 則回復無效0ΑΜ報文。
[0049] 在一個實施例中,如圖3所示,所述0ΑΜ協議棧編碼方法包括生成取值函數代碼。 首先,在對象定義腳本中根據預設的對象定義模板定義協議中的0ΑΜ對象。然後,將對象定 義腳本導入到功能實現腳本(即代碼生成腳本)。在功能實現腳本中,首先根據所述OAM 對象的手動取值標識判斷是否需要手動處理,如果答案為YES,則需要手動處理取值函數代 碼,即需要人工處理。如果答案為No,此時,先通過取值消息ID判斷設置消息是否有效(通 過判斷取值消息ID是否有效來確定),如果答案為YES,則根據所述0ΑΜ對象的取值消息 ID、取值消息結構體以及目的進程ID生成取值消息發送給目標進程。根據所述目標進程的 取值回復消息獲取所述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象Branch值、Leaf值以及 所獲取的所述0ΑΜ對象的相應屬性值填充到正確的0ΑΜ報文上,並回復所述正確的0ΑΜ報 文。如果答案為No,則回復無效0ΑΜ報文。
[0050] 本發明還提供一種0ΑΜ協議棧編碼系統。所述0ΑΜ協議棧編碼系統能夠應用如前 所述的0ΑΜ協議棧編碼方法。如圖4所示,在一個實施例中,所述0ΑΜ協議棧編碼系統1包 括:模板定義模塊11、對象定義模塊12、以及代碼生成模塊13。其中:
[0051] 模板定義模塊11,用於設置對象定義模塊。所述模板定義模塊中的所述對象定義 模板包括:對對象的全局屬性以及對象的參數的定義;所述對象的全局屬性包括:對象的 名稱、對象Branch值、以及對象Leaf值;所述對象的參數屬性包括:參數的名稱、參數的數 據類型、以及參數在內存中佔用的長度。
[0052] 對象定義模塊12,與所述模板定義模塊11相連,用於根據所述對象定義模板對 0ΑΜ對象進行定義0ΑΜ對象相關屬性值。
[0053] 代碼生成模塊13,與所述對象定義模塊12相連,用於根據定義的所述0ΑΜ對象相 關屬性值生成0ΑΜ協議棧相關的代碼。在一個實施例中,所述代碼生成模塊13中的所述 0ΑΜ協議棧相關的代碼包括:協議棧公用函數源碼;所述協議棧公用函數源碼包括協議棧 對象的結構體;所述結構體代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實 例。在一個實施例中,所述結構體實例包括相應對象的Branch、Leaf、設置函數、以及取值 函數。
[0054] 在一個實施例中,所述代碼生成模塊13中的所述0ΑΜ協議棧相關的代碼包括:協 議棧公用函數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體數組聲明、以及取 對象函數;所述結構體數組聲明代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構 體實例,所有的所述結構體實例組成結構體數組聲明;所述取對象函數返回所述結構體數 組中的對象數目。在一個實施例中,所述結構體實例包括相應對象的Branch、Leaf、設置函 數、以及取值函數。
[0055] 在一個實施例中,所述代碼生成模塊13中的所述0ΑΜ協議棧相關的代碼包括:協 議棧對象的設置函數代碼;所述設置函數輸入的參數包括回復報文內存指針、設置報文有 效數據欄位指針、以及對象實例號;所述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象 的全局屬性還包括:設置消息ID、設置消息結構體、手動設置標記以及目的進程ID。當所 述0ΑΜ對象的手動設置標識為預設的手動設置標識,則說明該0ΑΜ對象的設置函數需要人 工處理,此時,生成的所述0ΑΜ對象的取值函數為空函數。當所述0ΑΜ對象的手動設置標識 不為預設的手動設置標識時,生成的所述設置函數代碼包括:判斷所述設置消息ID是否有 效,如果有效,則根據所述設置報文有效數據欄位指針獲取所述0ΑΜ對象的相應屬性值,並 將所述0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對象的設置消息結構體中;根據所述0ΑΜ對 象的設置消息ID、設置消息結構體以及目的進程ID生成設置消息發送給目標進程;根據所 述目標進程的設置回復消息確定設置回復碼;將所述OAM對象的Branch值、Leaf值以及所 述設置回復碼填寫到所述回復報文內存指針確定的相應位置。所述設置函數還可以包括發 送所述回復報文(通常為0ΑΜ報文)。當所述設置消息ID無效時,回復帶無效返回碼的0ΑΜ 報文;當所述設置消息ID有效時,正確回復0ΑΜ報文。
[0056] 在一個實施例中,所述代碼生成模塊13中的所述0ΑΜ協議棧相關的代碼包括:協 議棧對象的取值函數代碼;所述取值函數輸入的參數包括回復報文內存指針、取值報文有 效數據欄位指針、以及對象實例號。所述對象實例號用於確定所述0ΑΜ對象;所述0ΑΜ對象 的全局屬性還包括:取值消息ID、取值消息結構體、手動取值標記以及目的進程ID。當所 述0ΑΜ對象的手動取值標識為預設的手動取值標識,則說明該0ΑΜ對象的取值函數需要人 工處理,此時,生成的所述0ΑΜ對象的取值函數為空函數。當所述0ΑΜ對象的手動取值標識 不為預設的手動取值標識時,生成的所述取值函數代碼包括:判斷所述取值消息ID是否有 效,如果有效,則根據所述0ΑΜ對象的取值消息ID、取值消息結構體以及目的進程ID生成取 值消息發送給目標進程;根據所述目標進程的取值回復消息獲取所述0ΑΜ對象的相應屬性 值,並將所述0ΑΜ對象Branch值、Leaf值以及所獲取的所述0ΑΜ對象的相應屬性值填充到 所述回復報文內存指針確定的相應位置。所述取值函數還可以包括發送所述回復報文(通 常為0ΑΜ報文)。當所述取值消息回復帶無效返回碼的0ΑΜ報文;當所述取值消息ID有效 時,正確回復帶參數內容的0ΑΜ報文。
[0057] 綜上所述,本發明一種0ΑΜ協議棧編碼方法及系統,具有以下有益效果:能夠自動 實現部分0ΑΜ協議棧相關代碼的自動生成,不僅大大提供了代碼的書寫效率,縮短了項目 開發周期,而且自動生成的代碼的準確性、清晰性也得到了增強,為後期的二次開發及維護 提供了極大的便利。所以,本發明有效克服了現有技術中的種種缺點而具高度產業利用價 值。
[0058] 上述實施例僅例示性說明本發明的原理及其功效,而非用於限制本發明。任何熟 悉此技術的人士皆可在不違背本發明的精神及範疇下,對上述實施例進行修飾或改變。因 此,舉凡所屬【技術領域】中具有通常知識者在未脫離本發明所揭示的精神與技術思想下所完 成的一切等效修飾或改變,仍應由本發明的權利要求所涵蓋。
【權利要求】
1. 一種OAM協議棧編碼方法,其特徵在於,所述OAM協議棧編碼方法包括: 設置對象定義模塊; 根據所述對象定義模板對0ΑΜ對象進行定義0ΑΜ對象相關屬性值; 根據定義的所述0ΑΜ對象相關屬性值生成0ΑΜ協議棧相關的代碼。
2. 根據權利要求1所述的0ΑΜ協議棧編碼方法,其特徵在於:所述對象定義模板包括: 對對象的全局屬性以及對象的參數的定義;所述對象的全局屬性包括:對象的名稱、對象 Branch值、以及對象Leaf值;所述對象的參數屬性包括:參數的名稱、參數的數據類型、以 及參數在內存中佔用的長度。
3. 根據權利要求2所述的0ΑΜ協議棧編碼方法,其特徵在於:所述0ΑΜ協議棧相關的 代碼包括:協議棧公用函數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體;所 述結構體代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實例。
4. 根據權利要求2所述的0ΑΜ協議棧編碼方法,其特徵在於:所述0ΑΜ協議棧相關的 代碼包括:協議棧公用函數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體數組 聲明、以及取對象數函數;所述結構體數組聲明代碼的生成是根據每一個所述0ΑΜ對象定 義生成一個結構體實例,所有的所述結構體實例組成結構體數組聲明;所述取對象數函數 返回所述結構體數組中的對象數目。
5. 根據權利要求3或4所述的0ΑΜ協議棧編碼方法,其特徵在於:所述根據每一個所 述0ΑΜ對象定義生成一個結構體的具體實現包括:根據所述對象的名稱、所述對象Branch 值、對象Leaf值生成一個結構體實例;所述結構體實例包括相應對象的Branch、Leaf、設置 函數、以及取值函數。
6. 根據權利要求5所述的0ΑΜ協議棧編碼方法,其特徵在於:所述0ΑΜ協議棧相關的代 碼包括:協議棧對象的設置函數代碼;所述設置函數輸入的參數包括回復報文內存指針、 設置報文有效數據欄位指針、以及對象實例號;所述對象實例號用於確定所述0ΑΜ對象;所 述0ΑΜ對象的全局屬性還包括:設置消息ID、設置消息結構體、手動設置標記以及目的進程 ID ;當所述0ΑΜ對象的手動設置標識不為預設的手動設置標識時,生成的所述設置函數代 碼包括:根據所述設置報文有效數據欄位指針獲取所述0ΑΜ對象的相應屬性值,並將所述 0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對象的設置消息結構體中;根據所述0ΑΜ對象的設 置消息ID、設置消息結構體以及目的進程ID生成設置消息發送給目標進程;根據所述目標 進程的設置回復消息確定設置回復碼;將所述0ΑΜ對象的Branch值、Leaf值以及所述設置 回復碼填寫到所述回復報文內存指針確定的相應位置;當所述0ΑΜ對象的對象手動設置標 識為預設的手動設置標識時,則生成的所述設置函數為空函數,此時所述設置函數需人工 處理。
7. 根據權利要求5所述的0ΑΜ協議棧編碼方法,其特徵在於:所述0ΑΜ協議棧相關的代 碼包括:協議棧對象的取值函數代碼;所述取值函數輸入的參數包括回復報文內存指針、 取值報文有效數據欄位指針、以及對象實例號;所述對象實例號用於確定所述0ΑΜ對象;所 述0ΑΜ對象的全局屬性還包括:取值消息ID、取值消息結構體、手動取值標記以及目的進程 ID ;當所述0ΑΜ對象的手動取值標識為預設的手動取值標識時,生成的所述取值函數代碼 包括:根據所述0ΑΜ對象的取值消息ID、取值消息結構體以及目的進程ID生成取值消息發 送給目標進程;根據所述目標進程的取值回復消息獲取所述0ΑΜ對象的相應屬性值,並將 所述OAM對象Branch值、Leaf值以及所獲取的所述OAM對象的相應屬性值填充到所述回 復報文內存指針確定的相應位置;所當所述0ΑΜ對象的對象手動取值標識為預設的手動取 值標識時,則生成的所述取值函數為空函數,此時所述設置函數需人工處理。
8. -種0ΑΜ協議棧編碼系統,其特徵在於:所述0ΑΜ協議棧編碼系統包括: 模板定義模塊,用於設置對象定義模塊; 對象定義模塊,與所述模板定義模塊相連,用於根據所述對象定義模板對0ΑΜ對象進 行定義0ΑΜ對象相關屬性值; 代碼生成模塊,與所述對象定義模塊相連,用於根據定義的所述0ΑΜ對象相關屬性值 生成0ΑΜ協議棧相關的代碼。
9. 根據權利要求8所述的0ΑΜ協議棧編碼系統,其特徵在於:所述模板定義模塊中的 所述對象定義模板包括:對對象的全局屬性以及對象的參數的定義;所述對象的全局屬性 包括:對象的名稱、對象Branch值、以及對象Leaf值;所述對象的參數屬性包括:參數的名 稱、參數的數據類型、以及參數在內存中佔用的長度。
10. 根據權利要求9所述的0ΑΜ協議棧編碼系統,其特徵在於:所述0ΑΜ協議棧相關的 代碼包括:協議棧公用函數源碼;所述協議棧公用函數源碼包括協議棧對象的結構體;所 述結構體代碼的生成是根據每一個所述0ΑΜ對象定義生成一個結構體實例。
11. 根據權利要求9所述的0ΑΜ協議棧編碼系統,其特徵在於:所述代碼生成模塊中 的所述0ΑΜ協議棧相關的代碼包括:協議棧公用函數源碼;所述協議棧公用函數源碼包括 協議棧對象的結構體數組聲明、以及取對象函數;所述結構體數組聲明代碼的生成是根據 每一個所述0ΑΜ對象定義生成一個結構體實例,所有的所述結構體實例組成結構體數組聲 明;所述取對象函數返回所述結構體數組中的對象數目。
12. 根據權利要求10或11所述的0ΑΜ協議棧編碼系統,其特徵在於:所述結構體實例 包括相應對象的Branch、Leaf、設置函數、以及取值函數;所述代碼生成模塊中的所述0ΑΜ 協議棧相關的代碼包括:協議棧對象的設置函數代碼;所述設置函數輸入的參數包括回復 報文內存指針、設置報文有效數據欄位指針、以及對象實例號;所述對象實例號用於確定所 述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:設置消息ID、設置消息結構體、手動設置標 記以及目的進程ID ;當所述0ΑΜ對象的手動設置標識不為預設的手動設置標識時,生成的 所述設置函數代碼包括:根據所述設置報文有效數據欄位指針獲取所述0ΑΜ對象的相應屬 性值,並將所述0ΑΜ對象的相應屬性值填寫到所述0ΑΜ對象的設置消息結構體中;根據所述 0ΑΜ對象的設置消息ID、設置消息結構體以及目的進程ID生成設置消息發送給目標進程; 根據所述目標進程的設置回復消息確定設置回復碼;將所述0ΑΜ對象的Branch值、Leaf值 以及所述設置回復碼填寫到所述回復報文內存指針確定的相應位置;所述代碼生成模塊中 的所述0ΑΜ協議棧相關的代碼還包括:協議棧對象的取值函數代碼;所述取值函數輸入的 參數包括回復報文內存指針、取值報文有效數據欄位指針、以及對象實例號;所述對象實例 號用於確定所述0ΑΜ對象;所述0ΑΜ對象的全局屬性還包括:取值消息ID、取值消息結構 體、手動取值標記以及目的進程ID ;當所述0ΑΜ對象的手動取值標識為預設的手動取值標 識時,生成的所述取值函數代碼包括:根據所述0ΑΜ對象的取值消息ID、取值消息結構體以 及目的進程ID生成取值消息發送給目標進程;根據所述目標進程的取值回復消息獲取所 述0ΑΜ對象的相應屬性值,並將所述0ΑΜ對象Branch值、Leaf值以及所獲取的所述0ΑΜ對 象的相應屬性值填充到所述回復報文內存指針確定的相應位置。
【文檔編號】H04L29/08GK104158903SQ201410427666
【公開日】2014年11月19日 申請日期:2014年8月27日 優先權日:2014年8月27日
【發明者】黃志成 申請人:上海斐訊數據通信技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀