@MISC\{IMM2013-06571, author = "P. B. Clausen", title = "{REST} based protocol parser - Prototype for future embedded implementation", year = "2013", publisher = "Technical University of Denmark, {DTU} Compute, {E-}mail: compute@compute.dtu.dk", address = "Matematiktorvet, Building 303{-B,} {DK-}2800 Kgs. Lyngby, Denmark", note = "{DTU} supervisor: Stig H{\o}gh, shog@dtu.dk, {DTU} Compute", url = "http://www.compute.dtu.dk/English.aspx", abstract = "This report describes the development of a {PC} prototype of a parser which shall eventually run under Windows Embedded Compact 7 on an {ARM} {CPU}. The protocol which the parser is developed for is Web{-XI} – a {REST} based protocol developed specifically for use in the next-generation Brüel \& Kj{\ae}r equipment. Not all aspects of the protocol are regarded in this first prototype, but focus is in particular on setting and retrieving values in the data model of the hardware. When a client sets or retrieves data through the parser prototype, the data is represented using {JSON}. The primary effort has been put into parsing and generating {JSON}. Data is stored in WebXiCache, a data structure which was provided and developed somewhat in parallel with this project. As the prototype should later be able to run on the {ARM} {CPU,} options have been considered regarding how the prototype could be implemented on a {PC} in much the same way as it should be on the {ARM} – as an {ISAPI} extension. A custom web server was developed from a simple example which was provided, and modified based on an analysis of the {ISAPI} interface. To verify the functionality of the parser, both internal and external tests were made. Internal tests run in the same scope as the parser prototype, and they can assert values directly on the data structure. The external tests use the {API} which will later be used in the {PC} software which shall communicate with the hardware to set and retrieve values through the parser prototype. This tests the entire chain from the connector {API} through the web server and parser prototype to the WebXiCache. At the end of the project period, attempts were made by others to import the parser prototype into the actual development environment used for the {ARM} {CPU}. With a minimum of changes the code was able to compile for the {ARM} {CPU,} and first impressions were that the parser should be able to run properly without too much effort." }