{"id":1982,"date":"2025-04-14T12:17:16","date_gmt":"2025-04-14T12:17:16","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=1982"},"modified":"2025-04-14T12:17:16","modified_gmt":"2025-04-14T12:17:16","slug":"sx10508-example-program","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/","title":{"rendered":"SX10508: Example Program"},"content":{"rendered":"\n<h6 class=\"wp-block-heading\">Example program<\/h6>\n\n\n\n<p>If you&#8217;ve run out of serial ports, then you can log via Xwire.&nbsp; It&#8217;s tedious to use, but this example shows one way to do it.&nbsp; It has been tested on DC216, but should work on a MMi203 or MS121 too as it uses the LCD.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br>;===============================================================================<br>;PURPOSE:<br>; Sample DC216 app that writes a datestamp and floating point value to a<br>; SX10508 1302 logger.<br>;<br>;===============================================================================<br><br>;===============================================================================<br>;<br>;&lt;INITSEG&gt;<br>;<br>;===============================================================================<br>   OBLCD_Dim      1,4,1                               ;configure LCD dimming<br>   XwireMaster    pXwireMaster                        ;start running as an Xwire master<br>   LaunchTask     taskPretend<br>   LaunchTask     taskXwireMon<br>   LaunchTask     taskLogger<br>   RunTasksForever<br><br><br>;===============================================================================<br>;<br>;&lt;CONSTSEG&gt;<br>;<br>;===============================================================================<br>;--Logger Commands<br>XLkCMD_Idle       EQU      '00                        ;no action<br>XLkCMD_Write      EQU      '01                        ;write data, length is the number of bytes to write<br>XLkCMD_Datestamp  EQU      '02                        ;write a datestamp, length is number of directive characters, data is directive characters<br>XLkCMD_NewFile    EQU      '03                        ;data may be an optional file name, otherwise the automatic sequence number is used<br>XLkCMD_AppendFile EQU      '04                        ;data may be an optional file name, otherwise the automatic sequence number is used<br>XLkCMD_DeleteFile EQU      '05                        ;data may be an optional file name, otherwise the current file is deleted<br>XLkCMD_GetTime    EQU      '06                        ;gets the time from the clock in the logger board, returns HOURS,MINUTES,SECONDS<br>XLkCMD_GetDate    EQU      '07                        ;gets the date from the clock in the logger board, returns DAY,MONTH,YEAR (year is 00 - 99)<br>XLkCMD_GetDOW     EQU      '08                        ;gets the day of week, 0 = Monday thru 6 = Sunday<br>XLkCMD_SetTime    EQU      '09                        ;sets the time where DATA1 thru 3 are HOURS,MINUTES,SECONDS<br>XLkCMD_SetDate    EQU      '0A                        ;sets tha date where DATA1 thru 3 are DAY,MONTH,YEAR (year is 00 - 99)<br>XLkCMD_FlushData  EQU      '0B                        ;force any data currently in the cache to be written to the card (this may decrease the life of your card)<br><br><br>;===============================================================================<br>;<br>;&lt;MEQUSEG&gt;<br>;RAM storage<br>;<br>;===============================================================================<br><br><br>;===============================================================================<br>;<br>;&lt;IOSEG&gt;<br>;I\/O Assignments<br>;<br>;===============================================================================<br><br><br>;===============================================================================<br>;<br>;AUTOMATIC RAM<br>;<br>;===============================================================================<br>;&lt;DEF_SEM&gt;<br>sXwireError       defSEM                              ;TRUE if there's an error communicating with the SX10508<br>sWriteFloat       defSEM                              ;TRUE if the logger task should write the float value<br><br>;&lt;DEF_BYTE&gt;<br><br>;&lt;DEF_WORD&gt;<br>wLogResume        defWORD                             ;address to resume log tx<br><br>;&lt;DEF_TIME24&gt;<br><br>;&lt;DEF_FLOAT&gt;<br>fNumber           defFLOAT                            ;the example app number<br>fNumber2          defFLOAT<br><br>;&lt;DEF_BLOCK&gt;<br>;-- Xwire buffers for the SX10508 Logger --<br>XLkM2SLen         #EQU     32                         ;we report 32 bytes long, but we'll actually only reserve 10 bytes for data in this controller<br>                  defBLOCK 17                         ;buffer length<br>XLbM2SCmd         defBYTE                             ;command<br>XLxNewCommand     EQU      7                          ;bit 7 in bM2SCmd is toggled to indicate a new command<br>XLbM2SLength      defBYTE                             ;length of transmit data<br>XLabM2SData       defBYTE  10                         ;data to be logged<br><br>XLkS2MLen         #EQU     4<br>                  defBLOCK XLkS2MLen                  ;receive buffer<br>XLbS2MCmdEcho     defBYTE                             ;copy of the last completed command (will match bM2SCmd when done)<br>XLabS2MResult     defBYTE  3                          ;command result \/ datetime value<br><br><br>;===============================================================================<br>;<br>;&lt;CODESEG&gt;<br>;<br>;===============================================================================<br><br>;===============================================================================<br>;DESCRIPTION:<br>; Increments a float every 5 seconds and requests it be written to a log file<br>;===============================================================================<br>taskPretend:<br>   fRecallW       fNumber<br>   fLoadQ         0.1<br>   fAdd<br>   fStore         fNumber<br>   fLoadQ         0.1<br>   fAdd<br>   fStore         fNumber2<br>   SetS           sWriteFloat<br>   OBLCD_Cls<br>   fRecallW       fNumber<br>   OBLCD_fDispW   8,1<br>   OBLCD_SetCur   1,0<br>   fRecallW       fNumber2<br>   OBLCD_fDispW   8,1<br>   MarkTime<br>_PretendLoop<br>   YieldTask<br>   GoIfST         sXwireError,_DispXWireErr<br>   LoopIfTiming   500,_PretendLoop<br>   Goto           taskPretend<br>_DispXWireErr<br>   OBLCD_Cls<br>                  ;0123456789012345<br>   OBLCD_Text     \"SX10508 Xwire   \"<br>   OBLCD_Text     \"error\"<br>   Off            oLedGreen<br>   Blink          oLedOn<br>   WaitForSF      sXwireError<br>   Off            oLedOn<br>   Goto           taskPretend<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; Main task manages Xwire transactions with the SX10508<br>;===============================================================================<br>taskLogger:<br>   YieldTask<br>   LoadI          0                                   ;zero the index for the logging routines<br><br>   GoIfSF         sWriteFloat,_NoWriteFloat           ;go write the float log if the semaphore is set<br>   ClrS           sWriteFloat<br>   GoSub          _subWriteFloat<br>   Goto           _LoggingLoop<br>_NoWriteFloat<br>   ; --<br>   ; add others if required<br>   ; --<br><br>   Goto           taskLogger<br><br>   ;-----------------------------<br>   ;-- Run the logging routine --<br>   ;-----------------------------<br>_LoggingLoop<br>   FloatMem16U    wLogResume                          ;is the logging task still running?<br>   fGoIfNZ        _SaveCommand                        ;jump if it is<br>   Goto           _SendIdle                           ;otherwise it's no longer running, so send idle<br>_SaveCommand<br>   ItoX                                               ;store the..<br>   Store          XLbM2SLength                        ;..length of the data<br>   GoSub          subSendCommand<br>_WafCommandDone<br>   YieldTask<br>   GoIfST         sXwireError,_XwireError             ;abort if error encountered<br>   Recall         XLbS2MCmdEcho                       ;has the logger completed the..<br>   Recall         XLbM2SCmd                           ;..<br>   Compare                                            ;..last command?<br>   GoIfNZ         _WafCommandDone                     ;jump if not<br>   LoadI          0                                   ;pre-clear the index register so the subroutine start writing at the head of the buffer<br>   GoSub          subResumeLog                        ;resume the logging routine<br>   Goto           _LoggingLoop<br>_SendIdle<br>   LoadX          XLkCMD_Idle<br>   GoSub          subSendCommand<br>_WafIdleDone<br>   YieldTask<br>   Recall         XLbS2MCmdEcho                       ;has the logger completed the..<br>   Recall         XLbM2SCmd                           ;..<br>   Compare                                            ;..last command?<br>   GoIfNZ         _WafIdleDone                        ;jump if not<br>   Goto           taskLogger<br><br>_XwireError                                           ;if there's an Xwire error, we display a message &amp; light the red LEDs<br>   WaitForSF      sXwireError<br>   Goto           taskLogger<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; This subroutine writes a datestamp and float to the log file<br>;PARAMETERS:<br>;  -&gt; Nil<br>;RETURNS:<br>; &lt;-  Nil<br>;===============================================================================<br>_subWriteFloat<br>   iiPrintText    XLabM2SData,\"Y\/m\/e H:M,\"            ;datestamp format YYYY\/MM\/DD HH:MM:SS<br>   LoadX          XLkCMD_Datestamp<br>   Suspend        wLogResume<br><br>   fRecallW       fNumber                             ;get the float<br>   iifPrintWVW    XLabM2SData,8,1                     ;write the float<br>   iiPrintText    XLabM2SData,\",\"                     ;separator<br>   LoadX          XLkCMD_Write                        ;request a write operation<br>   Suspend        wLogResume<br><br>   fRecallW       fNumber2                            ;get the float<br>   iifPrintWVW    XLabM2SData,8,1                    ;write the float<br>   iiPrintText    XLabM2SData,13,10                  ;terminate the line with CR LF<br>   LoadX          XLkCMD_Write                        ;request a write operation<br>   Suspend        wLogResume<br><br>   LoadX          XLkCMD_FlushData                    ;force the log to be..<br>   Suspend        wLogResume                          ;..written to the card (not recommended)<br><br>   Goto           subWriteLogEnd<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; Called by the main routine to run the next Xwire transaction.<br>;PARAMETERS:<br>;  -&gt; Nil<br>;RETURNS:<br>; &lt;-  Nil<br>;===============================================================================<br>subResumeLog:<br>   Resume         wLogResume                          ;resume from where we left off<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; Loads a command into the Xwire buffer and toggles the new command bit to<br>; ensure the logger recognises a repeat command as being new.<br>;PARAMETERS:<br>;  -&gt; X: command to send<br>;RETURNS:<br>; &lt;-  Nil<br>;===============================================================================<br>subSendCommand:<br>   GoIfST         XLxNewCommand,XLbM2SCmd,_SaveSendCommand ;jump if the existing toggle bit is high<br>   LoadX          %10000000                           ;otherwise it's low, so make..<br>   OrM                                                ;..it high<br>_SaveSendCommand<br>   Store          XLbM2SCmd                           ;issue the command<br>   Return<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; Called once all transactions have completed to stop the logging loop.<br>;PARAMETERS:<br>;  -&gt; Nil<br>;RETURNS:<br>; &lt;-  Nil<br>;===============================================================================<br>subWriteLogEnd:<br>   fLoadW         0<br>   FixToMem16U    wLogResume<br>   Return<br><br><br>;===============================================================================<br>;DESCRIPTION:<br>; <br>;PARAMETERS:<br>;  -&gt; Nil<br>;RETURNS:<br>; &lt;-  Nil<br>;===============================================================================<br>taskXwireMon:<br>   YieldTask<br>   XwireGetErrCount                                   ;any Xwire errors?<br>   GoIfF          taskXwireMon                        ;jump if none<br>   SetS           sXwireError<br>_FoundError<br>   MarkTime<br>_ErrTimer<br>   YieldTask<br>   XwireGetErrCount                                   ;any Xwire errors?<br>   GoIfT          _FoundError                         ;jump if there are<br>   LoopIfTiming   50,_ErrTimer                        ;stay in error state for 1.2 second<br>   ClrS           sXwireError                         ;no errors<br>   Goto           taskXwireMon<br><br><br>;===============================================================================<br>;<br>;&lt;NVEM0DIR&gt;<br>;<br>;===============================================================================<br>   NVEM0                                              ;Start of non-volatile memory<br><br><br>;===============================================================================<br>;<br>;&lt;NVEM0DATA&gt;<br>;Non-volatile memory data<br>;<br>;===============================================================================<br>pXwireMaster<br>   NV0Byte        10,XLbM2SCmd,XLkM2SLen,XLbS2MCmdEcho,XLkS2MLen<br>   NV0Byte        255<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Example program If you&#8217;ve run out of serial ports, then you can log via Xwire.&nbsp; It&#8217;s tedious to use, but this example shows one way&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1962,"menu_order":1618,"template":"","class_list":["post-1982","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SX10508: Example Program - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SX10508: Example Program - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"Example program If you&#8217;ve run out of serial ports, then you can log via Xwire.&nbsp; It&#8217;s tedious to use, but this example shows one way...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/\",\"name\":\"SX10508: Example Program - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"datePublished\":\"2025-04-14T12:17:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product documentation\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Product documentation: Xwire peripherals\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SX10508: Xwire SD Logger\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"SX10508: Example Program\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SX10508: Example Program - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"SX10508: Example Program - SPLat Controls","og_description":"Example program If you&#8217;ve run out of serial ports, then you can log via Xwire.&nbsp; It&#8217;s tedious to use, but this example shows one way...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/","og_site_name":"SPLat Controls","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/","name":"SX10508: Example Program - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"datePublished":"2025-04-14T12:17:16+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/sx10508-example-program\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Product documentation","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/"},{"@type":"ListItem","position":3,"name":"Product documentation: Xwire peripherals","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/"},{"@type":"ListItem","position":4,"name":"SX10508: Xwire SD Logger","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-xwire-peripherals\/sx10508-xwire-sd-logger\/"},{"@type":"ListItem","position":5,"name":"SX10508: Example Program"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/1982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/1962"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=1982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}