KR20190082542A - 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치 - Google Patents

테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR20190082542A
KR20190082542A KR1020180000266A KR20180000266A KR20190082542A KR 20190082542 A KR20190082542 A KR 20190082542A KR 1020180000266 A KR1020180000266 A KR 1020180000266A KR 20180000266 A KR20180000266 A KR 20180000266A KR 20190082542 A KR20190082542 A KR 20190082542A
Authority
KR
South Korea
Prior art keywords
data
generating
source code
information element
message
Prior art date
Application number
KR1020180000266A
Other languages
English (en)
Inventor
신한결
김종한
이태희
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180000266A priority Critical patent/KR20190082542A/ko
Priority to CN201811244344.1A priority patent/CN109992253A/zh
Priority to US16/181,964 priority patent/US10671354B2/en
Priority to EP18213465.0A priority patent/EP3506085A1/en
Publication of KR20190082542A publication Critical patent/KR20190082542A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/312List processing, e.g. LISP programming language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]

Abstract

본 개시의 예시적 실시예에 따라, 통신 프로토콜을 정의하는 사양에 따른 기능을 하드웨어에서 구현하기 위한 소스 코드를 자동으로 생성하는 방법은, 사양을 포함하는 입력 데이터를 획득하는 단계, 입력 데이터로부터 복수의 필드들을 포함하는 테이블을 추출하고 분류하는 전처리 단계, 복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 정형 데이터를 생성하는 단계, 및 정형 데이터로부터 소스 코드를 생성하는 단계를 포함할 수 있다.

Description

테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치{METHOD, SYSTEM AND APPARATUS FOR GENERATING SOURCE CODE FROM TABLE AND USING THE SAME}
본 개시의 기술적 사상은 통신 프로토콜에 관한 것으로서, 자세하게는 통신 프로토콜에 따른 기능을 하드웨어에서 구현하기 위한 소스 코드를 위한 시스템, 방법 및 장치에 관한 것이다.
통신 프로토콜은 송신측 및 수신측 사이 정상적인 통신을 위해서 사전에 정의될 수 있다. 송신측은 통신 프로토콜에 따라 데이터를 변환함으로써 생성된 신호를 전송할 수 있는 한편, 수신측은 수신된 신호를 통신 프로토콜에 따라 변환함으로써 데이터를 획득할 수 있다. 높은 전송량(throughput)을 지원하기 위하여 신규 통신 프로토콜이 개발될 수 있고, 송신측 및 수신측은 신규 통신 프로토콜을 지원하도록 설계될 수 있다.
통신 프로토콜은 다양한 정보를 정의할 수 있고, 정보를 처리하는 방식을 정의할 수 있다. 예를 들면, 무선 통신 시스템에서 통신 프로토콜은 기지국 및 단말 사이 상향 링크 및 하향 링크를 통해서 전송되는 다양한 메시지들을 정의할 수 있고, 메시지들의 변조/복조 및 인코딩/디코딩 방식을 정의할 수 있다. 통신 프로토콜을 지원하기 위한 송신측 및 수신측을 설계하는 것은 통신 프로토콜이 정의하는 다양한 정보 및 정보의 처리 방식을 구현하는 작업을 포함할 수 있고, 이러한 작업에는 많은 시간이 소요될 수 있다.
본 개시의 기술적 사상은 통신 프로토콜에 따른 기능을 수행하기 위한 소스 코드를 자동으로 생성하는 시스템, 방법 및 장치, 그리고 자동으로 생성된 소스 코드에 의해서 기능을 수행하는 방법 및 장치를 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라 통신 프로토콜을 정의하는 사양에 따른 기능을 하드웨어에서 구현하기 위한 소스 코드를 자동으로 생성하는 방법은, 사양을 포함하는 입력 데이터를 획득하는 단계, 입력 데이터로부터 복수의 필드들을 포함하는 테이블을 추출하고 분류하는 전처리 단계, 복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 정형 데이터를 생성하는 단계, 및 정형 데이터로부터 소스 코드를 생성하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 시스템은, 적어도 하나의 프로세서, 및 적어도 하나의 프로세서에 의해서 액세스되고 소스 코드를 자동으로 생성하는 상기 방법을 수행하도록 적어도 하나의 프로세서에 의해서 실행되는 일련의 명령어들을 저장하는, 메모리를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 통신 프로토콜을 정의하는 사양에 따른 통신을 수행하는 통신 장치의 제어 방법은, 사양을 포함하는 입력 데이터로부터 추출된 테이블에 포함된 복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 코덱을 정의하는 소스 코드를 생성하는 단계, 소스 코드를 컴파일함으로써 생성된 실행가능 데이터를 생성하는 단계, 및 통신 장치에 실행가능 데이터를 주입하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 통신 프로토콜을 정의하는 사양에 따른 통신을 수행하는 통신 장치의 동작 방법은, 사양을 포함하는 입력 데이터로부터 추출된 테이블로부터 자동으로 생성된 적어도 하나의 코덱(codec)에 액세스하는 단계, 및 적어도 하나의 코덱에 따라 통신을 위한 데이터를 처리하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 방법, 시스템 및 장치에 의하면, 통신 프로토콜에 따른 기능을 구현하기 위한 소스 코드가 자동으로 생성됨으로써 기능의 구현에 소요되는 기간이 단축될 수 있고, 기능 구현시 발생할 수 있는 오류가 방지될 수 있다.
또한, 본 개시의 예시적 실시예에 따른 방법, 시스템 및 장치에 의하면, 자동으로 생성된 소스 코드에 기인하여, 분산 설계된 기능들 사이 높은 호환성을 제공할 수 있다.
또한, 본 개시의 예시적 실시예에 따른 방법, 시스템 및 장치에 의하면, 입력 파라미터를 지원함으로써 설계자의 요구에 따라 높은 활용도를 가지는 소스 코드가 제공될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따라 소스 코드를 자동으로 생성하는 방법을 나타내는 순서도이다.
도 2a 내지 도 2d는 본 개시의 예시적 실시예들에 따라 통신 프로토콜의 사양을 나타내는 예시적인 테이블들을 나타낸다.
도 3은 본 개시의 예시적 실시예에 따라 도 1의 단계 S40의 예시를 나타내는 순서도이다.
도 4는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 순서도이다.
도 5a 및 도 5b는 본 개시의 예시적 실시예들에 따라 도 1의 정형 데이터의 예시들을 나타내는 도면들이다.
도 6은 본 개시의 예시적 실시예에 따라 도 1의 단계 S80의 예시를 나타내는 순서도이다.
도 7a 및 도 7b는 본 개시의 예시적 실시예들에 따라 메시지 구조체를 정의하는 소스 코드의 예시들을 나타내는 도면들이다.
도 8은 본 개시의 예시적 실시예에 따라 코덱을 정의하는 소스 코드의 예시를 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 순서도이다.
도 10a 및 도 10b는 본 개시의 예시적 실시예들에 따라 도 1의 정형 데이터의 예시들을 나타내는 도면들이다.
도 11은 본 개시의 예시적 실시예에 따라 도 1의 단계 S80의 예시를 나타내는 순서도이다.
도 12는 본 개시의 예시적 실시예에 따라 정보 요소 구조체를 정의하는 소스 코드의 예시를 나타내는 도면이다.
도 13은 본 개시의 예시적 실시예에 따라 코덱을 정의하는 소스 코드의 예시를 나타내는 도면이다.
도 14는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 도면이다.
도 15는 본 개시의 예시적 실시예에 따라 소스 코드를 자동으로 생성하는 방법을 나타내는 순서도이다.
도 16은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 17은 본 개시의 예시적 실시예에 따른 통신 장치의 제어 방법을 나타내는 순서도이다.
도 18은 본 개시의 예시적 실시예에 따른 통신 장치의 예시를 나타내는 블록도이다.
도 19는 본 개시의 예시적 실시예에 따른 통신 장치의 동작 방법을 나타내는 순서도이다.
도 20은 본 개시의 예시적 실시예에 따라 2개의 통신 장치들이 통신하는 동작의 예시를 나타내는 도면이다.
도 1은 본 개시의 예시적 실시예에 따라 소스 코드를 자동으로 생성하는 방법을 나타내는 순서도이고, 도 2a 내지 도 2d는 본 개시의 예시적 실시예들에 따라 통신 프로토콜의 사양을 나타내는 예시적인 테이블들을 나타낸다. 일부 실시예들에서, 도 1의 방법은 적어도 하나의 프로세서 및 메모리를 포함하는 시스템(예컨대, 도 16의 컴퓨팅 시스템(100))에 의해서 수행될 수 있고, 통신 프로토콜을 정의하는 사양을 포함하는 입력 데이터(D11)로부터 소스 코드를 포함하는 출력 데이터(D14)를 생성할 수 있다. 도 1에 도시된 바와 같이, 소스 코드를 자동으로 생성하는 방법은 복수의 단계들(S20, S40, S60, S80, S90)을 포함할 수 있다.
단계 S20에서, 입력 데이터(D11)를 획득하는 동작이 수행될 수 있다. 일부 실시예들에서, 입력 데이터(D11)는 통신 프로토콜을 정의하는 전자적 문서(또는 파일)일 수 있다. 예를 들면, 3GPP(3rd Generation Partnership Project)는 이동통신(telecommunication) 관련 단체들 사이 공동 연구 프로젝트로서, 무선 통신을 위한 통신 프로토콜을 정의하는 사양들을 포함하는 전자적 문서를 인터넷을 통해서 공개하고 있다. 또한, 이동통신 네트워크를 운영하는 오퍼레이터들은 자신의 통신 프로토콜을 정의하는 사양을 제공하고 있다. 무선 통신뿐만 아니라, 유선 통신, 예컨대 광역 통신망(Wide Area Network; WAN), 근거리 통신망(Local Area Network; LAN)과 같은 통신 네트워크 및 USB(Universal Serial Bus) 등과 같은 양자간 통신을 위한 통신 프로토콜을 정의하는 사양 역시 미리 정의될 수 있다. 이하에서, 본 개시의 예시적 실시예들은 3GPP에서 공개하는 사양을 주로 참조하여 설명될 것이나, 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점은 이해될 것이다. 입력 데이터(D11)는, 일부 실시예들에서 통신 네트워크를 통해서 획득될 수 있고, 일부 실시예들에서 저장 매체로부터 획득될 수도 있다.
입력 데이터(D11)는 복수의 테이블들을 포함할 수 있고, 입력 데이터(D11)에 포함된 사양들은 복수의 테이블들로서 표현될 수 있다. 예를 들면, 입력 데이터(D11)는, 도 2a에 도시된 바와 같이 메시지를 정의하는 메시지 테이블(T2a)을 포함할 수도 있고, 도 2b 내지 도 2d에 도시된 바와 같이 정보 요소(Information Element; IE)를 정의하는 테이블들(T2b, T2c, T2d)을 포함할 수도 있다. 통신 프로토콜의 복잡도가 높을수록, 입력 데이터(D11)에 포함된 테이블들의 개수 및/또는 크기는 증가할 수 있고, 통신 장치의 설계자가 테이블들을 참조함으로써 통신 장치를 설계하는 것은 현저한 소요 시간을 요구할 뿐만 아니라 오류의 발생 가능성을 높일 수 있다.
단계 S40에서, 테이블(D12)을 추출하고 분류하는 동작이 수행될 수 있다. 전술된 바와 같이, 입력 데이터(D11)의 사양들은 복수의 테이블들로서 표현될 수 있고, 입력 데이터(D11)로부터 복수의 테이블들이 추출될 수 있고, 복수의 테이블들 각각은 종류에 따라 분류될 수 있다. 일부 실시예들에서, 테이블(D12)의 제목, 테이블(D12)의 첫 번째 행에 포함된 필드들의 값들 및 테이블(D12)에 포함된 열들의 개수 중 적어도 하나에 기초하여 테이블(D12)의 종류가 인식될 수 있고, 인식된 종류에 따라 테이블(D12)이 분류될 수 있다. 후속하는 단계들(S60, S80)에서, 도 4 및 도 9 등에서 예시되는 바와 같이, 테이블(D12)은 테이블(D12)의 분류에 따라 결정된 방식으로 소스 코드가 생성될 수 있다. 본 명세서에서, 입력 데이터(D11)로부터 테이블(D12)을 추출하고 분류하는 동작은 입력 데이터(D11)의 전처리(preprocess) 동작으로 지칭될 수 있다. 이하에서, 도 2a 내지 도 2d를 참조하여 상이한 종류의 예시적인 테이블들(T2a, T2b, T2c, T2d)이 설명될 것이고, 정보 요소 테이블인 테이블들(T2b, T2c, T2d)를 나타내는 도 2b 내지 도 2d에 대한 설명 중 중복되는 내용은 생략될 것이다.
도 2a를 참조하면, 메시지 테이블(T2a)은 제목으로서 "Table 9.1.46.1: UPLINK BUSY message content"을 포함할 수 있고, 메시지 테이블(T2a)의 제목은 메시지 테이블(T2a)의 인덱스를 나타내는 제1 부분(21a), 메시지 테이블(T2a)의 명칭을 나타내는 제2 부분(22a) 및 테이블의 종류를 나타내는 제3 부분(23a)을 포함할 수 있다. 또한, 메시지 테이블(T2a)은 열(column)들의 명칭들을 포함하는 첫 번째 행(row)(24a) 및 적어도 하나의 항목을 나타내는 적어도 하나의 행(25a)을 포함할 수 있다. 일부 실시예들에서, 메시지 테이블(T2a)은 메시지 테이블(T2a)의 제목 중 메시지 테이블(T2a)의 종류를 나타내는 제3 부분(23a)에 따라 메시지 테이블로서 분류될 수 있다. 일부 실시예들에서, 메시지 테이블(T2a)은 첫 번째 행(24a)에 포함된 필드들의 값, 예컨대 3번째 필드에 포함된 값인 "Type / Reference"에 따라 메시지 테이블로서 분류될 수 있다. 일부 실시예들에서, 메시지 테이블(T2a)은 열들의 개수(즉, 6)에 따라 메시지 테이블로서 분류될 수 있다.
메시지 테이블(T2a)의 행들은 항목들로서 정보 요소들에 각각 대응할 수 있고, 동일한 열에 포함된 필드들은 공통적인 형식을 가질 수 있다. 예를 들면, 메시지 테이블(T2a)의 첫 번째 열은 정보 요소 인덱스(Information Element Index; IEI)에 대응할 수 있고, 첫 번째 열에 포함된 필드들은 값을 가지지 아니할 수 있고, 두 자리수의 16진수의 값을 가질 수도 있으며, 8번째 행의 첫 번째 필드와 같이, 한 자리수의 16진수, 즉 4-비트 길이의 값을 가질 수도 있다. 메시지 테이블(T2a)의 두 번째 열은 정보 요소의 명칭에 대응할 수 있고, 두 번째 열에 포함된 필드들은 텍스트를 값으로서 가질 수 있다. 메시지 테이블(T2a)의 세 번째 열은 정보 요소의 유형 및 참조에 대응할 수 있고, 세 번째 열에 포함된 필드들은 텍스트 및 인덱스를 값으로서 가질 수 있다. 메시지 테이블(T2a)의 네 번째 열은 필수적인 정보 요소인지 여부를 나타내는 정보에 대응할 수 있고, 네 번째 열에 포함된 필드들은 "mandatory"에 대응하는 "M", "optional"에 대응하는 "O" 및 "conditional"에 대응하는 "C" 중 하나를 값으로서 가질 수 있다. 메시지 테이블(T2a)의 다섯 번째 열은 정보 요소의 형식에 대응할 수 있고, 다섯 번째 열에 포함된 필드들은 "type"에 대응하는 "T", "length"에 대응하는 "L" 및 "value"에 대응하는 "V" 중 하나이상의 조합을 값으로서 가질 수 있다. 메시지 테이블(T2a)의 여섯 번째 열은 정보 요소의 길이에 대응할 수 있고, 여섯 번째 열에 포함된 필드들은 "1/2"와 같은 숫자를 가지거나, "3 - 20", "2 - n"과 같은 범위를 값으로서 가질 수 있고, 길이의 단위는 옥텟(octet)(즉, 8-비트)일 수 있다. 이와 같이, 하나의 열에 포함된 필드들이 가지는 공통적인 형식에 기초하여, 필드들의 값들은 어휘 분석될 수 있고, 유용한 정보가 추출될 수 있다.
도 2b를 참조하면, 정보 요소 테이블(T2b)은 제목으로서 "Figure 10.5.2.64.1: Talker Priority Status information element"를 포함할 수 있고, 정보 요소 테이블(T2b)의 제목은 정보 요소 테이블(T2b)의 인덱스를 나타내는 제1 부분(21b), 정보 요소 테이블(T2b)의 명칭을 나타내는 제2 부분(22b) 및 테이블의 종류를 나타내는 제3 부분(23b)을 포함할 수 있다. 또한, 정보 요소 테이블(T2b)은 열들의 명칭들을 포함하는 첫 번째 행(24b) 및 적어도 하나의 항목을 나타내는 적어도 하나의 행(25b)을 포함할 수 있다. 도 2a를 참조하여 전술된 바와 유사하게, 일부 실시예들에서, 정보 요소 테이블(T2b)은 정보 요소 테이블(T2b)의 제목 중 정보 요소 테이블(T2b)의 종류를 나타내는 제3 부분(23b)에 따라 정보 요소 테이블로서 분류될 수 있다. 일부 실시예들에서, 정보 요소 테이블(T2b)은 첫 번째 행(24b)에 포함된 필드들의 값, 예컨대 첫 번째 필드에 포함된 값인 "8"에 따라 정보 요소 테이블로서 분류될 수 있다. 일부 실시예들에서, 정보 요소 테이블(T2b)은 열들의 개수(즉, 9)에 따라 정보 요소 테이블로서 분류될 수 있다.
정보 요소 테이블의 항목들은 비트 시퀀스에 할당되는 코드들에 각각 대응할 수 있고, 8개의 열들은 옥텟의 8-비트들에 각각 대응할 수 있다. 예를 들면, 정보 요소 테이블(T2b)의 첫 번째 행(24b)은 8개의 비트들의 인덱스들을 값으로서 가지는 필드들을 포함할 수 있다. 하나의 행에서 동일한 코드에 대응하는 필드는 하나 이상의 열들에 대응할 수 있다. 예를 들면, 도 2b에 도시된 바와 같이, 정보 요소 테이블(T2b)의 마지막 행은 4개의 필드들을 포함할 수 있고, 4개의 필드들은 4개의 코드들, 즉 "ES", "Spare", "UAI" 및 "Priority"에 각각 대응할 수 있다. 또한, 정보 요소 테이블(T2b)의 마지막 열, 즉 아홉 번째 열에 포함된 필드들은 행들의 옥텟 인덱스들을 가질 수 있다.
도 2c를 참조하면, 정보 요소 테이블은 2이상의 행에서 동일한 코드에 대응하는 필드들을 포함할 수 있다. 예를 들면, 도 2c에 도시된 바와 같이, 정보 요소 테이블(T2c)에서 네 번째 행의 "Mobile Time Difference Value (high)", 다섯 번째 행의 "Mobile Time Difference Value (contd)" 및 여섯 번째 행의 "Mobile Time Difference Value (low)"는 21-비트의 길이를 가지는 하나의 코드에 대응할 수 있다. 이와 같이, 하나의 코드에 대응하는 2이상의 필드들은 코드에서 필드의 위치를 나타내는 표기(예컨대, "(high part)", "(low part)", "(high)", "(cont)", "(contd )", "(low)" 등)를 포함할 수 있다.
도 2d를 참조하면, 정보 요소 테이블은 가변적인 길이를 가지는 코드를 정의할 수 있다. 예를 들면, 도 2d에 도시된 바와 같이, 정보 요소 테이블(T2d)에서 옥텟 인덱스에 대응하는 아홉 번째 열의 필드(21d)는 "octet 4 .. octet n"을 값으로서 가질 수 있고, "n"은 옥텟 3에 있는 코드 "Multirate speech version"에 따라 결정될 수 있다. 또한, 일부 실시예들에서 코드의 가변적인 길이는 "octet 4-n"으로 표현될 수도 있다. 이와 같이, 가변적인 길이를 가지는 코드를 위하여 고정된 길이를 가지는 코드와 상이한 유형의 인코더/디코더가 사용될 수 있다.
도 1을 다시 참조하면, 단계 S60에서, 테이블(D12)로부터 정형 데이터(D13)를 생성하는 동작이 수행될 수 있다. 정형 데이터(D13)는 소스 코드를 생성하기 위하여 테이블(D12)로부터 생성되는 중간 데이터로서, 테이블(D12)에 포함된 복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 생성될 수 있다. 일부 실시예들에서, 규칙은 정규 표현식(regular expression)을 사용하여 미리 정의될 수 있고, 어휘 분석은 정규 표현식을 참조하는 어휘 분석기(lexer)에 의해서 수행될 수 있다. 정형 데이터(D13)는 테이블(D12)의 속성을 포함하는 테이블 데이터 및 테이블(D12)에 포함된 적어도 하나의 항목의 속성을 포함하는 항목 그룹 데이터를 포함할 수 있고, 항목 그룹 데이터는 항목에 대응하는 항목 데이터를 포함할 수 있다. 단계 S60에 대한 예시들은 도 4 및 도 9 등을 참조하여 후술될 것이다.
단계 S80에서, 정형 데이터(D13)로부터 소스 코드를 포함하는 출력 데이터(D14)를 생성하는 동작이 수행될 수 있다. 소스 코드는 특정 대상이나 동작을 정의하기 위하여 미리 정의된 규칙에 따라 텍스트로 작성된 데이터를 지칭할 수 있다. 예를 들면, 소스 코드는, 비제한적인 예시로서 C, C++ 등과 같은 프로그래밍 언어로 작성될 수도 있고, CSN.1(Concrete Syntax Notation One)과 같이 통신에 사용되는 데이터 구조를 나타내는 표기(notation)로 작성될 수도 있으며, ASN.1(Abstract Syntax Notation One)과 같이 통신에 사용되는 데이터 구조를 나타내는 인터페이스 기술 언어(interface description language)로 작성될 수도 있다. 일부 실시예들에서, 소스 코드는 통신 프로토콜의 메시지 빌딩(building) 블록의 구현에 사용될 수 있는 데이터 구조체를 정의할 수 있고, 일부 실시예들에서, 소스 코드는 메시지 전송/수신 블록의 구현에 사용될 수 있는 코덱, 예컨대 인코더 및/또는 디코더를 정의할 수 있다. 본 명세서에서 소스 코드를 포함하는 출력 데이터의 생성은 소스 코드의 생성으로 지칭될 수 있다.
단계 S90에서, 소스 코드(D14)를 포함하는 출력 데이터를 컴퓨터 독출가능 매체에 저장하는 동작이 수행될 수 있다. 예를 들면, 컴퓨터 독출가능 매체는, EEPROM(non-volatile memory such as a Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 비휘발성 메모리를 포함할 수도 있고, 자기 테이프, 광학 디스크, 자기 디스크와 같은 저장 매체를 포함할 수도 있다. 일부 실시예들에서, 단계 S60에서 생성된 정형 데이터(D13) 역시 컴퓨터 독출가능 매체에 저장될 수 있다.
전술된 바와 같이, 비정형(unstructured) 데이터로서 방대한 양의 사양들을 포함하는 입력 데이터로부터 컴퓨터(또는 컴퓨팅 시스템)로 처리가능한 정형 데이터가 생성될 수 있고, 정형 데이터로부터 컴퓨터가 실행가능한 소스 코드가 자동으로 생성될 수 있다. 이에 따라, 통신 프로토콜에 따른 기능을 구현하기 위한 소스 코드가 자동으로 생성됨으로써 기능의 구현에 소요되는 기간이 단축될 수 있을 뿐만 아니라, 기능 구현시 발생할 수 있는 오류가 방지될 수 있다. 또한, 자동으로 생성된 소스 코드에 기인하여, 분산되어 설계된 기능들 사이 높은 호환성이 제공될 수 있다.
도 3은 본 개시의 예시적 실시예에 따라 도 1의 단계 S40의 예시를 나타내는 순서도이다. 도 1을 참조하여 전술된 바와 같이, 도 3의 단계 S40'에서 입력 데이터(D11)로부터 테이블(D12)을 추출하고 분류하는 동작이 수행될 수 있다. 이하에서, 도 3은 도 1을 참조하여 설명될 것이다.
단계 S42에서, 입력 데이터(D11)로부터 테이블 목차를 추출하는 동작이 수행될 수 있다. 예를 들면, 입력 데이터(D11)는 서두에 테이블 목차를 포함할 수 있고, 테이블 목차는 테이블의 인덱스, 제목 및/또는 위치(예컨대, 페이지)를 포함할 수 있다.
단계 S44에서, 테이블 목차에 기초하여 테이블을 추출하고 분류하는 동작이 수행될 수 있다. 예를 들면, 테이블 목차에 포함된 테이블의 인덱스 및/또는 위치를 참조하여 테이블이 검색될 수 있고, 검색된 테이블이 추출될 수 있다. 또한, 테이블 목차에 포함된 테이블의 제목을 참조하여 추출된 테이블의 종류가 인식될 수 있고, 테이블의 종류에 따라 테이블이 분류될 수 있다.
도 4는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 순서도이고, 도 5a 및 도 5b는 본 개시의 예시적 실시예들에 따라 도 1의 정형 데이터(D13)의 예시들을 나타내는 도면들이다. 구체적으로, 도 4는 도 1의 단계 S40에서 추출된 테이블이 메시지 테이블인 경우 단계 S60의 예시를 나타내고, 도 5a 및 도 5b는 메시지 테이블로부터 생성된 정형 데이터의 예시들을 각각 나타낸다. 도 1을 참조하여 전술된 바와 같이, 도 4의 단계 S60a에서, 테이블로부터 정형 데이터를 생성하는 동작이 수행될 수 있다. 이하에서 도 4, 도 5a 및 도 5b는 도 2a의 메시지 테이블(T2a)을 참조하여 설명될 것이다.
도 4를 참조하면, 단계 S61a에서 메시지 테이블을 복수의 행들로 분할하는 동작이 수행될 수 있다. 예를 들면, 도 2a의 메시지 테이블(T2a)은 첫 번째 행(24a) 및 7개의 행들(25a)로 분할될 수 있다. 도 2a를 참조하여 전술된 바와 같이, 메시지 테이블에서 첫 번째 행을 제외한 나머지 행들 각각은 하나의 정보 요소에 대응하므로, 메시지 테이블을 복수의 행들로 분할하고, 행들을 순차적으로 처리함으로써 정보 요소에 대응하는 정형 데이터, 즉 항목 데이터가 생성될 수 있다.
단계 S62a에서, 다음 행으로 이동하는 동작이 수행될 수 있다. 이에 따라, 열들의 명칭들을 포함하는 첫 번째 행(24a)은 스킵될 수 있고, 7개의 행들(25a) 중 첫 번째 행이 선택될 수 있다.
단계 S63a에서, 필드들의 값들을 어휘 분석하는 동작이 수행될 수 있다. 도 4에 도시된 바와 같이, 미리 정의된 규칙을 포함하는 규칙 데이터(D41)가 참조될 수 있고, 필드들의 값들은 미리 정의된 규칙에 따라 어휘 분석될 수 있다. 예를 들면, 메시지 테이블(T2a)의 두 번째 열에 포함된 필드들은 미리 정의된 규칙에 따라 유형을 나타내는 텍스트 및 참조를 나타내는 숫자와 마침표의 조합으로 분리될 수 있다. 또한, 길이를 나타내는 행의 마지막 필드의 값은 길이 또는 길이의 범위 여부가 판단될 수 있고, 그에 따라 필드의 값은 상수로 변환되거나 범위를 나타내는 2이상의 상수/변수로 변환될 수 있다. 일부 실시예들에서, 규칙 데이터(D41)는 정규 표현식(regular expression)으로 표현된 규칙을 포함할 수 있다.
단계 S64a에서, 항목 데이터를 생성하는 동작이 수행될 수 있다. 항목 데이터는 테이블에 포함된 항목에 대응하는 데이터로서, 항목의 속성을 포함할 수 있다. 메시지 테이블(T2a)에서 항목은 정보 요소일 수 있고, 항목 데이터는 하나의 정보 요소에 대응할 수 있다. 도 2a 및 도 5a를 참조하면, 메시지 테이블(T2a)의 두 번째 행으로부터 제1 항목 데이터(D51)가 생성될 수 있고, 유사하게 메시지 테이블(T2a)의 여섯 번째 행 및 일곱 번째 행으로부터 제6 및 제7 항목 데이터(D56, D57)가 생성될 수 있다. 하나 이상의 항목(즉, 하나 이상의 정보 요소)에 대응하는 항목 데이터의 집합은 항목 그룹 데이터(D50a)로서 지칭될 수 있다.
도 5a에 도시된 바와 같이, 항목 데이터는 메시지 테이블(T2a)의 열들에 각각 대응하는 변수들을 가질 수 있고, 변수들은 대응하는 행의 필드들의 값들로 채워질 수 있다. 또한, 메시지 테이블(T2a)의 마지막 열의 필드들이 길이 또는 길이의 범위를 값으로서 가질 수 있으므로, 항목 데이터는 변수 "lengthType"을 가질 수 있고, 변수 "lengthType"은 "const" 또는 "var"을 값으로서 가질 수 있다. 예를 들면, 제6 항목 데이터(D56)는 메시지 테이블(T2a)의 여섯 번째 행에 대응할 수 있고, 길이에 대응하는 필드의 값 "3 - 20"을 위하여, "var"을 값으로서 가지는 변수 "lengthType", "3"을 값으로서 가지는 변수 "min-length" 및 "20"을 값으로서 가지는 변수 "max-length"를 가질 수 있다.
도 4를 다시 참조하면, 단계 S65a에서 현재 처리중인 행이 메시지 테이블(T2a)의 마지막 행인지 여부를 판단하는 동작이 수행될 수 있다. 마지막 행인 경우 단계 S66a가 후속하여 수행될 수 있는 한편, 그렇지 아니한 경우 단계 S62a가 수행될 수 있다.
단계 S66a에서, 테이블 데이터를 생성하는 동작이 수행될 수 있다. 테이블 데이터는 테이블에 대응하는 데이터로서, 테이블의 속성을 포함할 수 있다. 도 5b를 참조하면, 테이블 데이터(D50b)는 테이블의 명칭에 대응하는 변수 "Name" 및 항목 그룹 데이터에 대한 포인터에 대응하는 변수 "itemList []"을 포함할 수 있고, 변수 "itemList []"는 항목들 각각에 대한 포인터들을 포함할 수 있다. 일부 실시예들에서, 도 4에 도시된 바와 상이하게, 테이블 데이터는 단계 S60a의 초기에 생성될 수도 있다.
도 6은 본 개시의 예시적 실시예에 따라 도 1의 단계 S80의 예시를 나타내는 순서도이고, 도 7a 및 도 7b는 본 개시의 예시적 실시예들에 따라 메시지 구조체를 정의하는 소스 코드의 예시들을 나타내고, 도 8은 본 개시의 예시적 실시예에 따라 코덱을 정의하는 소스 코드의 예시를 나타낸다. 구체적으로, 도 6은 메시지 테이블로부터 생성된 정형 데이터로부터 소스 코드를 생성하는 동작을 나타내고, 도 7a, 도 7b 및 도 8은 도 5a 및 도 5b의 정형 데이터에 기초하여 생성된 소스 코드의 예시들을 나타낸다. 도 1을 참조하여 전술된 바와 같이, 도 6의 단계 S80a에서 정형 데이터로부터 소스 코드(또는, 소스 코드를 포함하는 출력 데이터)를 생성하는 동작이 수행될 수 있다. 비록 도 6에서 단계 S80a는 2개의 단계들(S82a, S84a)을 포함하는 것으로 예시되었으나, 일부 실시예들에서 도 1의 단계 S80은 도 6의 단계들(S82a, S84a) 중 하나만을 포함할 수도 있다. 이하에서, 도 6, 도 7a, 도 7b 및 도 8은 도 5a 및 도 5b를 참조하여 설명될 것이다.
도 6을 참조하면, 단계 S82a에서, 메시지 구조체를 정의하는 소스 코드를 생성하는 동작이 수행될 수 있다. 메시지 구조체는 메시지 테이블(예컨대, 도 2a의 T2a)에 의해서 결정되는 정보 요소들을 멤버들로서 포함할 수 있고, 소스 코드의 형식에 따라 작성될 수 있다. 예를 들면, 도 7a는 C 언어로 작성된 메시지 구조체(D71)를 나타내고, 도 7b는 CSN.1으로 작성된 메시지 구조체(D72)를 나타낸다. 비록 도시되지 아니하였으나, 일부 실시예들에서, 메시지 구조체는 C++와 같이 C 언어와 다른 프로그래밍 언어 또는 ASN.1과 같은 인터페이스 기술 언어로 작성될 수 있다.
도 7a를 참조하면, C 언어로 작성된 메시지 구조체(D71)는 테이블 데이터(D50b)로부터 추출된 구조체 명칭 "UplinkBusy_t"을 가질 수 있고, 항목 그룹 데이터(D50a)에 포함된 항목 데이터로부터 추출된 구조체 멤버들(라인 02-09)을 가질 수 있다. 도 7a에 도시된 바와 같이, 메시지 구조체(D71)는, 항목 데이터의 변수 "Type"의 값을 형식으로서 가지고 정보 요소를 명칭으로서 가지는, 변수를 멤버로서 포함할 수 있다. 일부 실시예들에서, 도 7a의 메시지 구조체(D71)는 메시지 코덱 함수(예컨대, 도 8의 "UplinkBusyEncoder")에서 사용되는 구조체와 일치할 수 있다.
도 7b를 참조하면, CSN.1로 작성된 메시지 구조체(D72)는 테이블 데이터(D50b)로부터 추출된 구조체 명칭 "UPLINK BUSY"를 가질 수 있고, 항목 그룹 데이터(D50a)에 포함된 항목 데이터로부터 추출된 구조체 멤버들(라인 02-09)을 가질 수 있다. 도 7a의 메시지 구조체(D71)와 유사하게, 도 7b의 메시지 구조체(D72) 역시 항목 데이터의 변수 "Type"의 값을 형식으로서 가지고 정보 요소를 명칭으로서 가지는, 변수를 멤버로서 포함할 수 있다. 일부 실시예들에서, 도 7b의 메시지 구조체(D72)는 중간 데이터로서, 원하는 프로그래밍 언어의 소스 코드를 생성하는데 사용될 수 있다.
도 6을 다시 참조하면, 단계 S84a에서 메시지 코덱 함수를 정의하는 소스 코드를 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 메시지 코덱 함수는 프로그래밍 언어로 작성될 수 있고, 메시지 인코더 함수 및/또는 메시지 디코더 함수를 포함할 수 있다. 예를 들면, 메시지 인코더 함수는 통신 채널을 통해서 전송될 데이터를 파라미터로서 가질 수 있고, 통신 프로토콜에 따라 데이터를 처리함으로써 메시지를 생성할 수 있다. 또한, 메시지 디코더 함수는 통신 채널을 통해서 수신된 메시지를 파라미터로서 가질 수 있고, 통신 프로토콜에 따라 메시지를 처리함으로써 데이터를 생성할 수 있다.
도 8을 참조하면, C 언어로 작성된 메시지 인코더 함수(D81)는 테이블 데이터(D50b)로부터 추출된 명칭 "UplinkBusyEncoder"를 가질 수 있고, 항목 그룹 데이터(D50a)에 포함된 항목 데이터로부터 정보 요소 코덱 함수를 호출하는 바디(body)를 가질 수 있다(라인 02-08). 또한, 도 8에 도시된 바와 같이, 메시지 인코더 함수(D81)는 도 7a의 메시지 구조체(D71)를 형식으로서 가지는 파라미터 "input"을 가질 수 있다(라인 01). 메시지 인코더 함수(D81)는 파라미터 "input"의 멤버들을 정보 요소 코덱 함수들 각각에 대한 파라미터로서 제공할 수 있다(라인 02-08).
도 9는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 순서도이고, 도 10a 및 도 10b는 본 개시의 예시적 실시예들에 따라 도 1의 정형 데이터(D13)의 예시들을 나타내는 도면들이다. 구체적으로, 도 9는 도 1의 단계 S40에서 추출된 테이블이 정보 요소 테이블인 경우 단계 S60의 예시를 나타내고, 도 10a 및 도 10b는 정보 요소 테이블로부터 생성된 정형 데이터의 예시들을 각각 나타낸다. 도 1을 참조하여 전술된 바와 같이, 도 9의 단계 S60b에서, 테이블로부터 정형 데이터를 생성하는 동작이 수행될 수 있다. 이하에서 도 9, 도 10a 및 도 10b는 도 2b의 정보 요소 테이블(T2b)을 참조하여 설명될 것이다.
도 9를 참조하면, 단계 S61b에서 정보 요소 테이블을 복수의 행들로 분할하는 동작이 수행될 수 있다. 예를 들면, 도 2b의 정보 요소 테이블(T2b)은 첫 번째 행(24b) 및 3개의 행들(25b)로 분할될 수 있다. 도 2b를 참조하여 전술된 바와 같이, 정보 요소 테이블에서 첫 번째 행을 제외한 나머지 행들에 포함된 필드들은 비트 시퀀스에 포함되는 코드들에 대응할 수 있고, 2이상의 필드들이 하나의 코드에 대응할 수도 있다. 하나의 필드에 대응하는 열들의 개수는 필드의 길이로서 지칭될 수 있고, 하나의 코드에 대응하는 하나 이상의 필드의 길이의 합은 코드의 길이(또는 비트 길이)로서 지칭될 수 있다.
단계 S62b에서, 초기화 동작이 수행될 수 있다. 예를 들면, 도 9에 도시된 바와 같이, 변수 "C_LEN"이 영(zero)로 설정될 수 있다. 변수 "C_LEN"은 코드 길이를 나타내는 변수로서, 후속 단계에서 필드의 길이가 합산됨으로써 코드의 길이에 대응하는 값을 가질 수 있다.
단계 S63b에서, 다음 행으로 이동하는 동작이 수행될 수 있다. 이에 따라, 비트 인덱스들을 포함하는 첫 번째 행(24b)은 스킵될 수 있고, 3개의 행들(25b) 중 첫 번째 행이 선택될 수 있다. 그 다음에, 하나의 행에 포함된 필드들을 처리하는 동작이 단계 S64_1b 내지 S64_7b에서 수행될 수 있다.
단계 S64_1b에서, 필드의 값을 어휘 분석하는 동작이 수행될 수 있다. 도 9에 도시된 바와 같이, 미리 정의된 규칙을 포함하는 규칙 데이터(D91)가 참조될 수 있고, 필드의 값은 미리 정의된 규칙에 따라 어휘 분석될 수 있다. 예를 들면, 정보 요소 테이블에 포함된 필드의 값은 텍스트로서 취급될 수 있고, 텍스트 유형의 변수에 저장될 수 있다. 단계 S64_1b에서, 정보 요소 테이블(T2b)의 두 번째 행의 첫 번째 필드와 같이, 비어 있는 필드, 즉 값을 가지지 아니한 필드가 검출될 수 있고, 비어 있는 필드에 대한 처리는 스킵될 수 있고, 예컨대 단계 S64_6b가 후속하여 수행될 수 있다.
단계 S64_2b에서, 이전 필드와 병합 여부를 판단하는 동작이 수행될 수 있다. 코드는, 도 2c의 정보 요소 테이블(T2c)과 같이, 8-비트 이상의 길이를 가질 수도 있고, 2이상의 연속된 옥텟들에 걸쳐 있을 수도 있다. 이에 따라 2이상의 행들에서 2이상의 필드들에 대응하는 코드가 존재할 수 있고, 현재 필드가 이전 필드와 병합되는지 여부가 판단될 수 있다. 예를 들면, 현재 필드의 값과 이전 필드의 값이 일치하는 경우, 양 필드들은 동일한 코드에 대응하는 것으로 판단될 수 있다. 일부 실시들에서, 필드들의 값들 중 코드에서 필드의 위치를 나타내는 표기(예컨대, "(high part)", "(low part)", "(high)", "(cont)", "(contd)", "(low)" 등)가 삭제된 값들이 상호 비교될 수 있다. 현재 필드와 이전 필드가 병합되는 경우, 단계 S64_3b가 후속하여 수행될 수 있는 한편, 그렇지 아니한 경우 단계 S64_4b가 후속하여 수행될 수 있다. 또한, 정보 요소 테이블의 첫 필드의 경우(값을 가지지 아니한 필드를 제외), 다음 필드의 처리과정에서 첫 필드와의 병합 여부가 판단되도록 단계 S64_3b가 후속하여 수행될 수 있다.
단계 S64_3b에서, 변수 "C_LEN"은 변수 "F_LEN"만큼 증가될 수 있고, "F_LEN"은 현재 필드의 길이를 값으로서 가질 수 있다. 단계 S64_2b에 의해서 현재 필드는 이전 필드와 동일한 코드에 대응하는 것으로 판정되었으므로 코드의 길이는 현재 필드의 길이만큼 증가할 수 있다. 도 9에 도시된 바와 같이, 단계 S64_3b에 후속하여 단계 S64_6b가 수행될 수 있다.
단계 S64_4b에서, 항목 데이터를 생성하는 동작이 수행될 수 있다. 단계 S64_2b에 의해서 현재 필드는 이전 필드와 상이한 코드에 대응하는 것으로 판정되었으므로, 이전 필드에 대응하는 코드의 항목 데이터가 생성될 수 있다. 정보 요소 테이블(T2b)에서 항목은 코드일 수 있고, 항목 데이터는 하나의 코드에 대응할 수 있다. 도 2b 및 도 10a를 참조하면, 정보 요소 테이블(T2b)의 두 번째 행에서 두 번째 필드로부터 제1 항목 데이터(D101)가 생성될 수 있고, 정보 요소 테이블(T2b)의 세 번째 행의 필드로부터 제2 항목 데이터(D102)가 생성될 수 있고, 정보 요소 테이블(T2b)의 네 번째 행의 4개 필드들로부터 제3 내지 제6 항목 데이터(D103 내지 D106)가 생성될 수 있다. 하나 이상의 항목(즉, 하나 이상의 코드)에 대응하는 항목 데이터의 집합은 항목 그룹 데이터(D100a)로서 지칭될 수 있다.
도 10a에 도시된 바와 같이, 항목 데이터는 코드의 유형, 명칭 및 길이에 각각 대응하는 변수들을 가질 수 있고, 변수들은 대응하는 코드의 유형, 명칭 및 길이의 값들로 채워질 수 있다. 예를 들면, 도 10a에 도시되 바와 같이, 코드의 유형은 미리 정해진 값들 "IEI", "LENGTH", "VAL" 및 "SPARE" 중 하나의 값을 가질 수 있고, 코드의 명칭은 "null" 또는 텍스트 값을 가질 수 있으며, 코드의 길이는 양의 정수의 값으로서 변수 "C_LEN"의 값을 가질 수 있다.
도 9를 다시 참조하면, 단계 S64_5b에서, 변수 "C_LEN"은 현재 필드의 길이 값으로서 설정될 수 있다. 단계 S64_2b에 의해서 현재 필드는 이전 필드와 상이한 코드에 대응하는 것으로 판정되었으므로 코드의 길이는 현재 필드의 길이로 설정될 수 있다.
단계 S64_6b에서, 현재 필드가 행의 마지막 필드인지 여부를 판단하는 동작이 수행될 수 있다. 예를 들면, 옥텟 인덱스를 나타내는 아홉 번째 필드를 제외하고, 여덟 번째 필드인지 여부가 판단될 수 있다. 현재 필드가 행의 마지막 필드가 아닌 경우, 단계 S64_7b에서 다음 필드로 이동하는 동작이 수행될 수 있고, 후속하여 단계 S64_1b가 수행될 수 있다. 다른 한편으로, 현재 필드가 행의 마지막 필드인 경우, 단계 S65b에서 현재 행이 테이블의 마지막 행인지 여부를 판단하는 동작이 수행될 수 있다. 현재 행이 마지막 행이 아닌 경우, 단계 S64b가 후속하여 수행될 수 있는 한편, 현재 행이 마지막 행인 경우, 단계 S66b가 후속하여 수행될 수 있다.
단계 S66b에서, 항목 데이터를 생성하는 동작이 수행될 수 있다. 단계 S64_6b 및 단계 S65b에 의해서 현재 필드는 정보 요소 테이블(T2b)의 마지막 필드로서 판정되었으므로, 현재 필드에 대응하는, 정보 요소 테이블(T2b)의 마지막 항목 데이터가 생성될 수 있다.
단계 S67b에서, 테이블 데이터를 생성하는 동작이 수행될 수 있다. 도 10b를 참조하면, 테이블 데이터(D100b)는 테이블의 명칭에 대응하는 변수 "Name" 및 항목 그룹 데이터에 대한 포인터에 대응하는 변수 "itemList []"를 포함할 수 있고, 변수 "itemList []"는 항목들 각각에 대한 포인터들을 포함할 수 있다. 일부 실시예들에서, 도 9에 도시된 바와 상이하게, 테이블 데이터는 단계 S60b의 초기에 생성될 수도 있다.
도 11은 본 개시의 예시적 실시예에 따라 도 1의 단계 S80의 예시를 나타내는 순서도이고, 도 12는 본 개시의 예시적 실시예에 따라 정보 요소 구조체를 정의하는 소스 코드의 예시를 나타내고, 도 13은 본 개시의 예시적 실시예에 따라 코덱을 정의하는 소스 코드의 예시를 나타낸다. 구체적으로, 도 11은 정보 요소 테이블로부터 생성된 정형 데이터로부터 소스 코드를 생성하는 동작을 나타내고, 도 12, 도 13은 도 10a 및 도 10b의 정형 데이터에 기초하여 생성된 소스 코드의 예시들을 나타낸다. 도 1을 참조하여 전술된 바와 같이, 도 11의 단계 S80b에서 정형 데이터로부터 소스 코드(또는, 소스 코드를 포함하는 출력 데이터)를 생성하는 동작이 수행될 수 있다. 비록 도 11에서 단계 S80b는 2개의 단계들(S82b, S84b)을 포함하는 것으로 도시되었으나, 일부 실시예들에서 도 1의 단계 S80은 도 11의 단계들(S82b, S84b) 중 하나만을 포함할 수도 있다. 이하에서, 도 11, 도 12 및 도 13은 도 10a 및 도 10b를 참조하여 설명될 것이다.
도 11을 참조하면, 단계 S82b에서, 정보 요소 구조체를 정의하는 소스 코드를 생성하는 동작이 수행될 수 있다. 정보 요소 구조체는 정보 요소 테이블(예컨대, 도 2b의 T2b)에 의해서 결정되는 코드들을 멤버들로서 포함할 수 있고, 소스 코드의 형식에 따라 작성될 수 있다. 예를 들면, 도 12는 CSN.1으로 작성된 정보 요소 구조체(D121)를 나타내고, 일부 실시예들에서, 메시지 구조체는 C 언어와 같은 프로그래밍 언어 또는 ASN.1과 같은 인터페이스 기술 언어로 작성될 수 있다.
도 12를 참조하면, CNS.1으로 작성된 정보 요소 구조체(D121)는 테이블 데이터(D100b)로부터 추출된 구조체 명칭 "Talker Priority Status"를 가질 수 있고(라인 01), 항목 그룹 데이터(D100a)에 포함된 항목 데이터로부터 추출된 구조체 멤버들(라인 02-08)을 가질 수 있다. 도 12에 도시된 바와 같이, 정보 요소 구조체(D121)의 멤버는 코드의 명칭과 길이 정보를 포함할수 있다.
도 11을 다시 참조하면, 단계 S84b에서 정보 요소 코덱 함수를 정의하는 소스 코드를 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 정보 요소 코덱 함수는 프로그래밍 언어로 작성될 수 있고, 정보 요소 인코더 함수 및/또는 정보 요소 디코더 함수를 포함할 수 있다. 예를 들면, 정보 요소 인코더 함수는 통신 채널을 통해서 전송될 정보 요소의 값을 파라미터로서 가질 수 있고, 통신 프로토콜에 따라 파라미터의 값을 처리함으로써 코드들로 구성된 정보 요소를 생성할 수 있다. 또한, 정보 요소 디코더 함수는 통신 채널을 통해서 수신된 정보 요소를 파라미터로서 가질 수 있고, 통신 프로토콜에 따라 정보 요소를 처리함으로써 코드들을 추출할 수 있고, 코드들의 값들에 대응하는 정보를 검출할 수 있다.
도 11에 도시된 바와 같이, 정보 요소 코덱 함수를 포함하는 소스 코드는 미리 정의된 API(Application Programming Interface) 함수들을 포함하는 API 데이터(D111)를 참조함으로써 생성될 수 있다. 일부 실시예들에서, API 함수는 통신 프로토콜에 독립적인 동작을 제공할 수 있다. 예를 들면, API 함수는 정보 요소 인코더 함수에서 호출할 수 있는 비트 패킹(bit packing) 함수를 포함할 수 있고, 정보 요소 디코더 함수에서 호출할 수 있는 비트 언패킹(bit unpacking) 함수를 포함할 수 있다. API 함수의 예시는 도 13을 참조하여 후술될 것이다.
도 13을 참조하면, C 언어로 작성된 정보 요소 인코더 함수(D131)는 테이블 데이터(D100b)로부터 추출된 명칭 "TalkerPriorityStatusEncoder"를 가질 수 있고(라인 01), 항목 그룹 데이터(D100a)에 포함된 항목 데이터로부터 API 함수를 호출하는 바디를 가질 수 있다(라인 04-19). 또한, 도 13에 도시된 바와 같이, 정보 요소 인코더 함수(D131)는 현재까지 인코딩된 코드의 길이를 나타내는 파라미터 "packedLen", 코드로 변환될 데이터에 대한 포인터를 나타내는 파라미터 "target", 코드가 저장되는 버퍼에 대한 포인터를 나타내는 파라미터 "buffer"를 가질 수 있다(라인 01). 정보 요소 인코더 함수(D131)는 버퍼를 초기화하기 위하여 API 함수인 "InitBuffer"를 호출할 수 있고, 코드의 길이를 파라미터로서 제공할 수 있다. 또한, 정보 요소 인코더 함수(D131)는 버퍼에 코드를 추가하기 위하여 API 함수인 "BitPacking8" 을 호출할 수 있고, 코드의 값, 코드의 길이, 현재까지 인코딩된 코드의 길이를 파라미터로서 제공할 수 있다. 또한, 도 2b의 정보 요소 테이블(T2b)의 "Spare"에 대응하는 도 10a의 항목 데이터(D104)에 따라, 정보 요소 인코더 함수(D131)는 API 함수를 호출하지 아니하고서 변수 "packedLen"을 "Spare" 코드의 길이만큼 증가시킬 수 있다(라인 13). 정보 요소 인코더 함수(D131)는 코드들의 인코딩을 종료한 후 리턴된 변수 "packedLen"을 리턴할 수 있고(라인 21), 변수 "packedLen"의 값은 다른 정보 요소 인코더 함수의 호출시 파라미터로서 제공될 수 있다.
일부 실시예들에서, 정보 요소에 포함된 코드의 길이에 따라 정보 요소 코덱 함수에서 호출되는 API 함수가 결정될 수 있다. 예를 들면, API 데이터는 패킹할 데이터의 비트수에 따른 복수의 비트 패킹 함수들, 예컨대 "BitPacking8", "BitPacking16", "BitPacking32", "BitPackingOver32" 등을 포함할 수 있다. 도 13에 도시된 바와 같이, 정보 요소 인코더 함수(D131)는 8-비트 이하의 길이를 가지는 코드들을 위하여 API 함수인 "BitPacking8"을 호출할 수 있는 한편, 도 2c의 정보 요소 테이블(T2c)에 의해서 정의되는 코드 "Mobile Time Difference Value"는 21-비트의 길이를 가질 수 있고, 이에 따라 정보 요소 테이블(T2c)에 의해서 정의되는 정보 요소 "Mobile Time Difference"를 위한 정보 요소 인코더 함수는 버퍼에 코드 "Mobile Time Difference Value"를 추가하기 위하여 "BitPacking32"를 호출할 수 있다.
도 14는 본 개시의 예시적 실시예에 따라 도 1의 단계 S60의 예시를 나타내는 도면이다. 도 1을 참조하여 전술된 바와 같이, 도 14의 단계 S60c에서 테이블로부터 정형 데이터를 생성하는 동작이 수행될 수 있다. 도 14의 예시에서, 테이블의 필드에 포함된 다른 테이블에 대한 참조가 정형 데이터를 생성하는데 이용될 수 있고, 이하에서 도 14는 도 2a 및 도 2b의 테이블들(T2a, T2b)을 참조하여 설명될 것이다.
입력 데이터에 포함된 테이블의 필드는 다른 테이블에 대한 참조를 값으로서 포함할 수 있다. 도 2a에 도시된 바와 같이, 메시지 테이블(T2a)의 세 번째 열에 포함된 필드들은 정보 요소의 유형과 함께 다른 테이블의 인덱스를 값으로서 가질 수 있다. 예를 들면, 메시지 테이블(T2a)의 다섯 번째 행에서 세 번째 열에 대응하는 필드는 다른 테이블의 인덱스로서 "10.5.2.64"를 값으로서 가질 수 있고, 인덱스 "10.5.2.64"는 도 2b의 정보 요소 테이블(T2b)을 가리킬 수 있다. 후술되는 바와 같이, 테이블로부터 정형 데이터를 생성하는 과정에서 다른 테이블에 대한 참조가 이용될 수 있고, 이에 따라 정형 데이터를 생성하는 동작의 효율이 증대될 수 있다.
단계 S62c에서, 다른 테이블에 대한 참조를 포함하는 필드를 검출하는 동작이 수행될 수 있다. 일부 실시예들에서, 도 2a의 메시지 테이블(T2a)과 같이, 특정 열에 포함된 필드들이 다른 테이블에 대한 참조를 포함하는 것으로 미리 정의될 수도 있고, 필드의 값을 어휘 분석함으로써 다른 테이블에 대한 참조, 즉 다른 테이블의 인덱스가 추출될 수 있다. 또한, 일부 실시예들에서, 필드의 값을 어휘 분석하는 과정에서 다른 테이블의 인덱스와 같은 형식을 가지는 값이 검출될 수도 있다.
단계 S64c에서, 다른 테이블로부터 생성된 정형 데이터에 대한 포인터를 생성하는 동작이 수행될 수 있다. 예를 들면, 다른 테이블로부터 생성된 테이블 데이터 및 항목 그룹 데이터에 대한 포인터들이 생성될 수 있고, 생성된 포인터들을 사용하여 다른 테이블로부터 생성된 테이블 데이터 및 항목 그룹 데이터에 대한 액세스가 가능할 수 있다. 이에 따라, 도 2a 및 도 2b의 테이블들(T2a, T2b)과 같이, 메시지 테이블은 하나 이상의 정보 요소 테이블과 연결될 수 있다.
단계 S66c에서, 다른 테이블과의 오류를 검출하는 동작이 수행될 수 있다. 일부 실시예들에서, 다른 테이블로부터 정형 데이터를 생성하는 동작이 수행될 수 있고, 현재 테이블로부터 생성된 정형 데이터 및 다른 테이블로부터 생성된 정형 데이터를 비교함으로써 오류가 검출될 수 있다. 예를 들면, 도 2a의 메시지 테이블(T2a)로부터 정형 데이터를 생성하는 과정에서, 도 2b의 정보 요소 테이블(T2b)에 대한 참조로서 검출된 인덱스 "10.5.2.64"에 따라 정보 요소 테이블(T2b)이 액세스될 수 있고, 정보 요소 테이블(T2b)로부터 정형 데이터가 생성될 수 있다. 그 다음에, 메시지 테이블(T2a)의 필드로부터 추출된 값인 "Talker Priority Status"와 정보 요소 테이블(T2b)의 명칭 "Talker Priority Status"가 비교될 수 있다. 또한, 메시지 테이블(T2a)의 필드로부터 추출된 길이인 "3"과 정보 요소 테이블(T2b)의 옥텟 개수가 비교될 수 있다. 이와 같은 비교 과정에서 발생하는 불일치가 오류로서 검출될 수 있고, 오류 검출시, 일부 실시예들에서 정형 데이터를 생성하는 동작이 중단될 수 있고, 일부 실시예들에서 정형 데이터 및 소스 코드와 함께 생성되는 로그 데이터에 오류 정보가 추가될 수 있다. 이와 같이, 통신 프로토콜을 정의하는 사양에 포함된 오류가 검출됨으로써, 통신 프로토콜에 따른 기능을 구현하는 과정의 초기에 오류의 검출이 가능할 수 있다.
도 15는 본 개시의 예시적 실시예에 따라 소스 코드를 자동으로 생성하는 방법을 나타내는 순서도이다. 도 1의 방법과 비교할 때, 도 15의 방법은 입력 파라미터를 획득하는 단계(S30')를 더 포함할 수 있다. 이하에서 도 15에 대한 설명 중 도 1과 중복되는 내용은 생략될 것이다.
단계 S20'에서 입력 데이터를 획득하는 동작이 수행될 수 있고, 단계 S30'에서 입력 파라미터(P_IN)를 획득하는 동작이 수행될 수 있다. 일부 실시예들에서, 도 15에 도시된 바와 상이하게, 입력 파라미터(P_IN)를 획득하는 동작이 입력 데이터를 획득하는 동작에 선행하여 수행될 수 있다. 일부 실시예들에서, 입력 파라미터(P_IN)는 접사(AFF), 소스 코드의 형식(O_TYPE), 인코딩 규칙(E_RULE) 중 적어도 하나를 포함할 수 있다. 이와 같이, 소스 코드를 자동으로 생성하는 방법은 입력 파라미터를 지원함으로써 설계자의 요구에 따라 높은 활용도를 가지는 소스 코드를 생성할 수 있다.
단계 S40'에서 테이블을 추출하고 분류하는 동작이 수행될 수 있고, 단계 S60'에서 정형 데이터를 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 정형 데이터는 입력 파라미터(P_IN)에 기초하여 생성될 수 있다. 예를 들면, 입력 파라미터(P_IN)는 접사(AFF)를 포함할 수 있고, 접사(AFF)는 접두사(prefix) 및/또는 접미사(suffix)를 포함할 수 있다. 정형 데이터에 포함되는 테이블 데이터 및 항목 데이터는, 입력 데이터로부터 추출된 값에 입력 파라미터(P_IN)에 포함된 접사(AFF)가 추가된 값을 명칭으로 가지는 변수 등을 포함할 수 있고, 결과적으로, 정형 데이터에 기초하여 생성되는 소스 코드에도 접사(AFF)가 반영될 수 있다.
단계 S80'에서, 소스 코드를 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 소스 코드는 입력 파라미터(P_IN)에 기초하여 생성될 수 있다. 예를 들면, 입력 파라미터(P_IN)는 소스 코드의 형식(O_TYPE)을 포함할 수 있고, 소스 코드의 형식(O_TYPE)은 소스 코드가 작성되는 언어, 예컨대 프로그래밍 언어, CSN.1 또는 ASN.1을 가리킬 수 있다. 이에 따라, 소스 코드는 소스 코드의 형식(O_TYPE)이 가리키는 언어로서 작성될 수 있다. 인코딩 규칙(E_RULE)은, 비제한적인 예시로서, Distinguished Encoding Rules(DER), Basic Encoding Rules(BER), Canonical Encoding Rules(CER), XML Encoding Rules(XER), Canonical XML Encoding Rules(CXER), Extended XML Encoding Rules(E-XER), Packed Encoding Rules(PER, unaligned: UPER, canonical: CPER), Octet Encoding Rules(OER, canonical: COER), JSON Encoding Rules(JER), Generic String Encoding Rules(GSER) 등과 같은 인코딩 규칙들 중 하나를 가리킬 수 있고, 소스 코드에서 코덱은 인코딩 규칙(E_RULE)에 따라 정의될 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(100)을 나타내는 블록도이다. 일부 실시예들에서, 소스 코드를 생성하는 방법은 도 16의 컴퓨팅 시스템(100)에 의해서 수행될 수 있다. 도 16에 도시된 바와 같이, 컴퓨팅 시스템(100)은 메모리(110), 적어도 하나의 프로세서(120), 입출력 인터페이스(130), 그래픽 프로세서(140), 버스(150), 스토리지(160), 입출력 장치들(170), 네트워크 인터페이스(180) 및 디스플레이(190)를 포함할 수 있다. 메모리(110), 적어도 하나의 프로세서(120), 입출력 인터페이스(130) 및 그래픽 프로세서(140)는 버스(150)를 통해서 상호 통신할 수 있다. 이하에서 도 16은 도 1을 참조하여 설명될 것이다.
메모리(110)는 휘발성 메모리 장치 및/또는 비휘발성 메모리 장치를 포함할 수 있고, 적어도 하나의 프로세서(120)가 실행하는 명령어들을 저장할 수 있다. 도 16에 도시된 바와 같이, 메모리(110)는 일련의 명령어들의 집합으로서, 전처리 모듈(112), 어휘 분석기(114) 및 코드 생성기(116)를 저장할 수 있다. 전처리 모듈(112), 어휘 분석기(114) 및 코드 생성기(116) 각각은, 특정 기능을 수행하기 위한 명령어들의 집합으로서, 프로시저, 서브루틴, 소프트웨어 모듈 등으로 지칭될 수 있다. 적어도 하나의 프로세서(120)는 메모리(110)에 저장된 프로시저를 실행함으로써 특정 기능을 수행할 수 있고, 본 명세서에서, 적어도 하나의 프로세서(120)가 프로시저를 실행함으로써 기능을 수행하는 것은, 프로시저가 기능을 수행하는 것으로 지칭될 수도 있다.
일부 실시예들에서, 메모리(110)에 저장된 프로시저들은 도 1의 단계들에 대응하는 동작들을 각각 수행할 수 있다. 예를 들면, 전처리 모듈(112)은 입력 데이터로부터 테이블을 추출하고 분류하도록 구성될 수 있고, 어휘 분석기(114)는 테이블에 포함된 필드들의 값들을 어휘 분석함으로써 정형 데이터를 생성하도록 구성될 수 있으며, 코드 생성기(116)는 정형 데이터로부터 소스 코드를 생성하도록 구성될 수 있다.
입출력 인터페이스(130)는 네트워크 인터페이스(180)를 통한 네트워크(예컨대, LAN, WAN), 입출력 장치들(170)(예컨대, 마우스, 키보드, 스피커, 프린터, 기타 다른 입출력 장치들) 및 스토리지(160)(예컨대, 컴퓨터 독출가능 매체)에 대한 연결들을 제공할 수 있다. 일부 실시예들에서, 입출력 인터페이스(130)는 자동으로 소스 코드를 생성하는 방법의 수행을 위한 데이터를 제공할 수 있다. 예를 들면, 스토리지(160)는 도 1의 입력 데이터(D11), 정형 데이터(D13) 및/또는 소스 코드를 포함하는 출력 데이터(D14)를 저장할 수 있다. 일부 실시예들에서, 입력 데이터(D11)는 네트워크 인터페이스(180)를 통해서 획득될 수 있고, 정형 데이터(D13) 및 출력 데이터(D14)는 네트워크 인터페이스(180)를 통해서 컴퓨팅 시스템(100)의 외부로 출력될 수 있다. 일부 실시예들에서, 입력 데이터(D11) 및 도 15의 입력 파라미터(P_IN)는 입출력 장치들(170)을 통해서 획득될 수 있고, 정형 데이터(D13) 및 출력 데이터(D14)는 입출력 장치들(170)을 통해서 컴퓨팅 시스템(100)의 외부로 출력될 수 있다.
그래픽 프로세서(140)는 디스플레이(190)를 구동할 수 있고, 디스플레이(190)는 본 개시의 예시적 실시예들에 따라 생성된 정형 데이터(D13) 및/또는 소스 코드를 시각적으로 출력할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 통신 장치의 제어 방법을 나타내는 순서도이고, 도 18은 본 개시의 예시적 실시예에 따른 통신 장치의 예시를 나타내는 블록도이다.
통신 장치는 통신 프로토콜에 따른 통신을 수행하기 위한 임의의 장치일 수 있다. 통신 장치는 비제한적인 예시로서 LTE(Long Term Evolution) 시스템, CDMA(Code Division Multiple Access) 시스템, GSM(Global System for Mobile Communications) 시스템, WLAN(Wireless Local Area Network) 시스템 등과 같은 무선 통신 시스템에서, 무선 통신을 제공하는 기지국(base station)이나 사용자 기기(user equipment)를 지칭할 수도 있고, 기지국이나 사용자 기기에 포함되는 부품(예컨대, 모뎀)을 지칭할 수도 있다.
도 17을 참조하면, 단계 S120에서, 테이블로부터 코덱을 정의하는 소스 코드(D181)를 생성하는 동작이 수행될 수 있다. 테이블은 통신 프로토콜을 정의하는 사양으로서 입력 데이터에 포함될 수 있고, 본 개시의 예시적 실시예들에 따라 테이블로부터 소스 코드(D181)가 자동으로 생성될 수 있다.
단계 S140에서, 소스 코드(D181)를 컴파일 하는 동작이 수행될 수 있다. 예를 들면, 소스 코드(D181)가 프로그래밍 언어로 작성된 경우, 프로그래밍 언어의 컴파일러에 의해서 소스 코드(D181)가 컴파일될 수 있고, 실행가능 데이터(D182)가 생성될 수 있다. 소스 코드(D181)가 CSN.1 또는 ASN.1으로 작성된 경우, 소스 코드(D181)는 프로그래밍 언어로 작성된 소스 코드로 변환될 수 있고, 변환된 소스 코드가 프로그래밍 언어의 컴파일러에 의해서 컴파일될 수 있고, 실행가능 데이터(D182)가 생성될 수 있다. 실행가능 데이터(D182)는 적어도 하나의 프로세서에 의해서 실행될 수 있는 복수의 명령어들을 포함할 수 있다.
단계 S160에서, 실행가능 데이터를 통신 장치에 주입하는 동작이 수행될 수 있다. 예를 들면, 통신 장치는 적어도 하나의 프로세서에 의해서 액세스되는 비휘발성 메모리 장치를 포함할 수 있고, 비휘발성 메모리 장치에 실행가능 데이터(D182)를 프로그램함으로써 실행가능 데이터가 통신 장치에 주입될 수 있다. 통신 장치는 실행가능 데이터(D182)에 따라 통신 프로토콜을 준수하는 통신을 제공할 수 있다.
도 18을 참조하면, 통신 장치의 예시로서 무선 통신 기기(200)는 ASIC(Application Specific Integrated Circuit)(210), ASIP(Application Specific Instruction set Processor)(230), 메모리(250), 메인 프로세서(270) 및 메인 메모리(290)를 포함할 수 있다. ASIC(210), ASIP(230) 및 메인 프로세서(270) 중 2개 이상은 상호 통신할 수 있다. 또한, ASIC(210), ASIP(230), 메모리(250), 메인 프로세서(270) 및 메인 메모리(290) 중 적어도 2개 이상은 하나의 칩에 내장될 수 있다.
ASIP(230)은 특정한 용도를 위하여 커스텀화된 집적 회로로서, 특정 어플리케이션을 위한 전용의 명령어 세트(instruction set)를 지원할 수 있고, 명령어 세트에 포함된 명령어를 실행할 수 있다. 메모리(250)는 ASIP(230)와 통신할 수 있고, 비일시적인 저장장치로서 ASIP(230)에 의해서 실행되는 복수의 명령어들을 저장할 수 있고, 일부 실시예들에서 도 18의 실행가능 데이터(D182)를 저장할 수도 있다. 메모리(250)는, 비제한적인 예시로서 RAM(Random Access Memory), ROM(Read Only Memory), 테이프, 자기디스크, 광학디스크, 휘발성 메모리, 비휘발성 메모리 및 이들의 조합과 같이, ASIP(230)에 의해서 접근가능한 임의의 유형의 메모리를 포함할 수 있다. ASIP(230)는 메모리(250)에 저장된 실행가능 데이터(D182)에 포함된 일련의 명령어들을 실행함으로써 통신 프로토콜에 따른 동작을 수행할 수 있다.
메인 프로세서(270)는 복수의 명령어들을 실행함으로써 무선 통신 기기(200)를 제어할 수 있다. 예를 들면, 메인 프로세서(270)는 ASIC(210) 및 ASIP(230)를 제어할 수도 있고, 무선 통신 네트워크를 통해서 수신된 데이터를 처리하거나 무선 통신 기기(200)에 대한 사용자의 입력을 처리할 수도 있다. 메인 메모리(290)는 메인 프로세서(270)와 통신할 수 있고, 비일시적인 저장장치로서 메인 프로세서(270)에 의해서 실행되는 복수의 명령어들을 저장할 수도 있다.
도 19는 본 개시의 예시적 실시예에 따른 통신 장치의 동작 방법을 나타내는 순서도이고, 도 20은 본 개시의 예시적 실시예에 따라 2개의 통신 장치들이 통신하는 동작의 예시를 나타낸다. 구체적으로, 도 19는 통신 장치에 포함된 프로세서에 의해서 수행되는 통신 장치의 동작 방법을 나타내고, 도 20은 무선 통신 시스템에서 사용자 기기(300) 및 기지국(400)이 통신하는 동작의 예시를 나타낸다. 도 17의 통신 장치와 유사하게, 도 18의 통신 장치의 동작 방법에서 통신 장치는 통신 프로토콜에 따른 통신을 제공하기 위한 임의의 장치일 수 있다.
도 19를 참조하면, 단계 S220에서, 테이블로부터 자동으로 생성된 적어도 하나의 코덱에 액세스하는 동작이 수행될 수 있다. 예를 들면, 코덱은, 본 개시의 예시적 실시예들에 따라, 통신 프로토콜을 정의하는 사양으로서 테이블로부터 자동으로 생성될 수 있고, 일련의 명령어들을 포함할 수 있다. 코덱은 메모리 장치에 저장될 수 있고, 프로세서는 통신을 위한 동작, 예컨대 송신 및/또는 수신의 착수시, 코덱을 저장하는 메모리 장치에 액세스할 수 있다. 일부 실시예들에서, 코덱에 액세스하는 동작은 프로세서에 의해서 코덱에 포함된 일련의 명령어들이 호출되는 동작을 포함할 수 있다.
도 20을 참조하면, 사용자 기기(User Equipment; UE)(300)은 무선 통신 기기로서, 고정되거나 이동성을 가질 수 있고, 기지국(400)과 통신하여 데이터 및/또는 제어정보를 송수신할 수 있는 다양한 기기들을 지칭할 수 있다. 예를 들면, 사용자 기기들(UE 내지 UE5)은 단말 기기(terminal equipment), MS(Mobile Station), MT(Mobile Terminal), UT(User Terminal), SS(Subscribe Station), 무선 장치(wireless device), 휴대 장치(handheld device) 등으로 지칭될 수 있다. 기지국(Base Station; BS)(400)은 일반적으로 사용자 기기 및/또는 다른 기지국과 통신하는 고정된 지점(fixed station)을 지칭할 수 있고, 사용자 기기 및/또는 타 기지국과 통신함으로써 데이터 및 제어정보를 교환할 수 있다. 예를 들면, 기지국(400)은 Node B, eNB(evolved-Node B), 섹터(Sector), 싸이트(Site), BTS(Base Transceiver System), AP(Access Pint), 릴레이 노드(Relay Node), RRH(Remote Radio Head), RU(Radio Unit), 스몰 셀(small cell) 등으로 지칭될 수도 있다.
테이블로부터 자동으로 생성된 코덱은 프로토콜 스택에서 2이상의 레이어들에 사용되는 2이상의 코덱들을 포함할 수 있다. 예를 들면, 도 20에 도시된 바와 같이, 사용자 기기(300)는 제1 및 제2 코덱(310, 320)을 포함할 수 있고, 기지국(400) 역시 제1 및 제2 코덱(410, 420)을 포함할 수 있다. 제1 코덱(310, 410)은 통신 프로토콜의 NAS(Non Access Stratum)에서 사용되는 인코더/디코더를 제공할 수 있는 한편, 제2 코덱(320, 420)은 L3에서 사용되는 인코더/디코더를 제공할 수 있다.
도 19를 다시 참조하면, 단계 S240에서, 적어도 하나의 코덱에 따라 통신을 위한 데이터를 처리하는 동작이 수행될 수 있다. 예를 들면, 프로세서는 인코더를 정의하는 코덱에 액세스할 수 있고, 송신하고자 하는 데이터를 처리함으로써 인코딩된 데이터를 생성할 수 있다. 또한, 프로세서는 디코더를 정의하는 코덱에 액세스할 수 있고, 수신된 데이터를 처리함으로써 디코딩된 데이터를 생성할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 통신 프로토콜을 정의하는 사양에 따른 기능을 하드웨어에서 구현하기 위한 소스 코드를 자동으로 생성하는 방법으로서,
    상기 사양을 포함하는 입력 데이터를 획득하는 단계;
    상기 입력 데이터로부터 복수의 필드들을 포함하는 테이블을 추출하고 분류하는 전처리 단계;
    복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 정형 데이터를 생성하는 단계; 및
    상기 정형 데이터로부터 상기 소스 코드를 생성하는 단계를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 전처리 단계는, 상기 테이블의 제목, 상기 테이블의 첫 번째 행에 포함된 필드들의 값들 및 상기 테이블에 포함된 열들의 개수 중 적어도 하나에 기초하여 상기 테이블을 분류하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 청구항 1에 있어서,
    상기 전처리 단계는, 상기 테이블을 메시지 테이블 또는 정보 요소 테이블로서 분류하는 것을 특징으로 하는 방법.
  4. 청구항 1에 있어서,
    상기 정형 데이터를 생성하는 단계는,
    상기 테이블의 속성을 포함하는 테이블 데이터를 생성하는 단계; 및
    상기 테이블에 포함된 적어도 하나의 항목의 속성을 포함하는 항목 그룹 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 청구항 4에 있어서,
    상기 테이블 데이터를 생성하는 단계는, 상기 테이블의 명칭 및 상기 항목 그룹 데이터에 대한 포인터를 포함하는 상기 테이블 데이터를 생성하는 것을 특징으로 하는 방법.
  6. 청구항 4에 있어서,
    상기 항목 그룹 데이터를 생성하는 단계는, 메시지 테이블로 분류된 상기 테이블의 한 행에 포함된 필드들의 값들을 포함하는 항목 데이터를 생성하는 것을 특징으로 하는 방법.
  7. 청구항 6에 있어서,
    상기 소스 코드를 생성하는 단계는, 상기 테이블 데이터로부터 구조체 명칭을 추출하고 상기 항목 데이터로부터 구조체 멤버를 추출함으로써, 메시지 구조체를 정의하는 상기 소스 코드를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 청구항 6에 있어서,
    상기 소스 코드를 생성하는 단계는, 상기 테이블 데이터로부터 메시지 코덱(codec) 함수의 명칭 및 파라미터를 추출하고 상기 항목 데이터로부터 정보 요소 코덱 함수의 명칭 및 파라미터를 추출함으로써, 상기 정보 요소 코덱 함수를 호출하는 상기 메시지 코덱 함수를 정의하는 상기 소스 코드를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 청구항 4에 있어서,
    상기 항목 그룹 데이터를 생성하는 단계는, 정보 요소(information element) 테이블로 분류된 상기 테이블의 적어도 하나의 병합된 필드의 값 및 상기 적어도 하나의 병합된 필드의 길이를 포함하는 항목 데이터를 생성하는 것을 특징으로 하는 방법.
  10. 청구항 9에 있어서,
    상기 소스 코드를 생성하는 단계는, 상기 테이블 데이터로부터 정보 요소의 명칭을 추출하고 상기 항목 데이터로부터 코드 명칭 및 코드 길이를 추출함으로써, 정보 요소 구조체를 정의하는 상기 소스 코드를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 청구항 9에 있어서,
    상기 소스 코드를 생성하는 단계는,
    상기 테이블 데이터로부터 정보 요소 코덱 함수의 명칭 및 파라미터의 유형(type)을 추출하고 미리 정의된 API(application programming interface) 함수의 파라미터의 값을 상기 항목 데이터로부터 추출함으로써, 상기 API 함수를 호출하는 상기 정보 요소 코덱 함수를 정의하는 상기 소스 코드를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 청구항 1에 있어서,
    상기 소스 코드를 생성하는 단계는, 프로그래밍 언어, ASN.1(Abstract Syntax Notation one) 또는 CSN.1(Concrete Syntax Notation One)으로 작성된 소스 코드를 생성하는 것을 특징으로 하는 방법.
  13. 청구항 1에 있어서,
    접사(affix)를 포함하는 입력 파라미터를 획득하는 단계를 더 포함하고,
    상기 정형 데이터를 생성하는 단계는, 상기 접사를 포함하는 값을 포함하는 상기 정형 데이터를 생성하는 것을 특징으로 하는 방법.
  14. 청구항 1에 있어서,
    상기 소스 코드의 형식 및 인코딩 규칙 중 적어도 하나를 포함하는 입력 파라미터를 획득하는 단계를 더 포함하고,
    상기 소스 코드를 생성하는 단계는, 상기 소스 코드의 형식 및 상기 인코딩 규칙 중 적어도 하나에 기초하여 상기 소스 코드를 생성하는 것을 특징으로 하는 방법.
  15. 청구항 1에 있어서,
    상기 정형 데이터를 생성하는 단계는,
    다른 테이블에 대한 참조를 포함하는 필드를 검출하는 단계; 및
    상기 참조에 기초하여 상기 다른 테이블로부터 생성된 정형 데이터에 대한 포인터를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 청구항 15에 있어서,
    상기 정형 데이터를 생성하는 단계는,
    상기 포인터를 사용함으로써 상기 테이블 및 상기 다른 테이블 사이 오류를 검출하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 청구항 1에 있어서,
    상기 전처리 단계는,
    상기 입력 데이터로부터 테이블 목차를 추출하는 단계; 및
    상기 테이블 목차에 기초하여 상기 테이블을 추출하고 분류하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 통신 프로토콜을 정의하는 사양에 따른 통신을 수행하는 통신 장치의 제어 방법으로서,
    상기 사양을 포함하는 입력 데이터로부터 추출된 테이블에 포함된 복수의 필드들의 값들을 미리 정의된 규칙에 따라 어휘 분석(lexical analysis)함으로써 코덱을 정의하는 소스 코드를 생성하는 단계;
    상기 소스 코드를 컴파일함으로써 생성된 실행가능 데이터를 생성하는 단계; 및
    상기 통신 장치에 상기 실행가능 데이터를 주입하는 단계를 포함하는 통신 장치의 제어 방법.
  19. 청구항 18에 있어서,
    상기 통신 장치는, 메모리 장치 및 상기 메모리에 저장된 명령어들을 실행하는 적어도 하나의 프로세서를 포함하고,
    상기 실행가능 데이터는, 상기 적어도 하나의 프로세서에 의해서 실행되는 일련의 명령어들을 포함하는 것을 특징으로 하는 통신 장치의 제어 방법.
  20. 통신 프로토콜을 정의하는 사양에 따른 통신을 수행하는 통신 장치의 동작 방법으로서,
    상기 사양을 포함하는 입력 데이터로부터 추출된 테이블로부터 자동으로 생성된 적어도 하나의 코덱(codec)에 액세스하는 단계; 및
    상기 적어도 하나의 코덱에 따라 상기 통신을 위한 데이터를 처리하는 단계를 포함하는 통신 장치의 동작 방법.
KR1020180000266A 2018-01-02 2018-01-02 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치 KR20190082542A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180000266A KR20190082542A (ko) 2018-01-02 2018-01-02 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치
CN201811244344.1A CN109992253A (zh) 2018-01-02 2018-10-24 从表生成源代码及使用该源代码的方法、系统和设备
US16/181,964 US10671354B2 (en) 2018-01-02 2018-11-06 Method, system and apparatus for generating source code from table and using the same
EP18213465.0A EP3506085A1 (en) 2018-01-02 2018-12-18 Method, system and apparatus for generating source code from table and using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180000266A KR20190082542A (ko) 2018-01-02 2018-01-02 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치

Publications (1)

Publication Number Publication Date
KR20190082542A true KR20190082542A (ko) 2019-07-10

Family

ID=64901331

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180000266A KR20190082542A (ko) 2018-01-02 2018-01-02 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치

Country Status (4)

Country Link
US (1) US10671354B2 (ko)
EP (1) EP3506085A1 (ko)
KR (1) KR20190082542A (ko)
CN (1) CN109992253A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102109854B1 (ko) * 2019-10-29 2020-05-13 유진바이오소프트 주식회사 임상데이터 분석에 사용되는 데이터 전처리 자동화 시스템과 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799670B (zh) * 2021-04-14 2021-08-03 盛威时代科技集团有限公司 一种统一多端逻辑开发的方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USH1837H (en) 1997-09-26 2000-02-01 Fletcher; Anthony G. Generic telecommunications system and associated call processing architecture
US6310888B1 (en) 1997-12-30 2001-10-30 Iwork Software, Llc System and method for communicating data
JPH11231924A (ja) 1998-02-10 1999-08-27 Yaskawa Electric Corp 異種コントローラの指令生成・監視装置
JP2002215450A (ja) 2001-01-17 2002-08-02 Forbis:Kk ネットワーク環境における情報の収集・同期・統合・組立方法およびその装置
US20020157041A1 (en) 2001-04-23 2002-10-24 Bennett David Charles Protocol parser-code generator
KR20040029732A (ko) 2002-10-02 2004-04-08 주식회사 케이티 Inap과 xml변환에 의한 scp와 응용서버간 연동장치 및 방법
CA2562012C (en) * 2004-04-28 2013-01-22 Fujitsu Limited Source-code-generation supporting program and source-code-generation supporting method
JP6291454B2 (ja) 2015-05-22 2018-03-14 日本電信電話株式会社 ビジネスプロセス図生成装置、ビジネスプロセス図生成プログラム、および、ビジネスプロセス図生成方法
US10223362B2 (en) 2016-03-31 2019-03-05 International Electronic Business Iii, Inc. Methods and systems for converting business to business data to a canonical format

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102109854B1 (ko) * 2019-10-29 2020-05-13 유진바이오소프트 주식회사 임상데이터 분석에 사용되는 데이터 전처리 자동화 시스템과 방법

Also Published As

Publication number Publication date
US10671354B2 (en) 2020-06-02
EP3506085A1 (en) 2019-07-03
CN109992253A (zh) 2019-07-09
US20190205101A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
RU2669743C1 (ru) Способ и устройство гибридного автоматического запроса на повторение с полярным кодом и беспроводное устройство связи
US8990148B1 (en) System and method for dynamic hierarchical data parsing
US8423075B2 (en) Physical downlink control channel specific scrambling
EP3573262A1 (en) Coding and decoding method and terminal
CN108376073B (zh) 一种测试软件包生成方法及终端
KR102517843B1 (ko) Aiml 기반의 챗봇 시스템 및 챗봇 서비스 제공 방법
WO2018213134A1 (en) Nominal complexity and weighted combinations for polar code construction
US20140173556A1 (en) Systems and methods for selection of specialized functions in dynamically-typed languages
CN112311600A (zh) 基于网络数据分析的策略建议生成方法、装置
US11147049B2 (en) Uplink control channel resource determining method, terminal, and network side device
CN108234081A (zh) 编码方法及装置
KR20190082542A (ko) 테이블로부터 소스 코드의 생성 및 그것의 사용을 위한 방법, 시스템 및 장치
CN112311598A (zh) 网络中的数据信息分析方法、装置
CN109408682A (zh) 一种正则表达式匹配的方法、系统及设备
CN114327495A (zh) 基于ast的异常捕获代码注入方法、装置及其应用
CN104143991A (zh) 极性Polar码的译码方法和装置
US11799498B2 (en) Data processing method and device
CN106034119B (zh) 应用安装包的加密混淆方法及装置
CN106788811A (zh) 一种数字通信系统及误码率的计算方法
US20220263626A1 (en) Method and apparatus for determining position occupied by resource, user equipment, and storage medium
US10200152B2 (en) Method and device for transmitting data using LDPC code
JP2020532181A (ja) ポーラーコード用のレートマッチングインターリービング方法及び装置
CN112019357B (zh) 网络配置方法、装置、设备和系统
CN113282283B (zh) 一种操作数据库表的方法、装置及电子设备
Lenzi et al. On the performance of code block segmentation for LTE-advanced

Legal Events

Date Code Title Description
E902 Notification of reason for refusal