[ORAN] FlexRIC Sevice Model (2): Encode/Decode
在定義好 Service Model 的 Indication 之後, 我們接著去修改 Encode/Decode 的相關程式, 位置的路徑一樣是位於: ~/flexric/src/sm/new_sm 在此路徑下, 有兩個資料夾: dec, enc, 分別對應於 decode 和 encode 的功能 其中, 我們也可以看到, 在 encode/decode 中也對應了三種格式: ASN.1, fb (flatBuffer) 以及 plain, 對應於在 SM 建立的格式, 考慮到我們使用 plain 作為此次的範例, 相關的檔案就包括: enc/new_enc_plain.h, enc/new_enc_plain.c, dec/new_dec_plain.h, dec/new_dec_plain.c, 其中, header 檔 (.h) 只定義了程式,不須修改, 和 SM 相關修改的範例如下: enc/new_enc_plain.c: // 根據定義的 SM 資料格式長度宣告記憶體大小 // 並把 SM 中的資料直接 memcpy 至傳送的資料格式中 byte_array_t new_enc_ind_msg_plain(new_ind_msg_t const* ind_msg) { assert(ind_msg != NULL); byte_array_t ba = {0}; size_t const sz = sizeof(ind_msg->len) + sizeof(new_ng_u_tunnel_stats_t)*ind_msg->len + sizeof(ind_msg->tstamp); // 長度為 SM 定義的格式加上 timestamp 長度 // printf("Size of the byte array = %lu\n", sz); ba.buf = malloc(sz); assert(ba.buf != NULL && "Memory exhausted"); memcpy(ba.buf, &ind_msg->len, sizeof(ind_msg-