Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

History
executable file
·
52 lines (39 loc) · 4.16 KB

File metadata and controls

executable file
·
52 lines (39 loc) · 4.16 KB

Sample Code for Glade/GTK Emulator Projects

This repository contains code for creating an IoTivity-lite server emulator with GUI running on the the host OS. The examples include support for the glade GUI generator tool and GTK.

Currently, this has only been tested on IoTivity-lite and Ubuntu linux, but other platforms may work with slight modification.

There is currently one sample project.

  • dimlight - This project creates a graphical dimmable light bulb that can be turned off or on and can be set to a dimming level between 0% and 100%. There are actually only 4 different brightness pictures, but the code will support any number of pictures if you have better graphics.

Installation

To install all the samples described above, just type the following command.

This command will do a number of things:

  • Clone the Emulator-Code repository (which includes all the sample code described above). Each sample subdirectory includes the following files:

    • Makefile: A Makefile description file that will manage the compiling and linking of the project.
    • .json: The JSON device description file that is the input to DeviceBuilder and describes all the resources available on the device. Each of these resources will show up in the source code and introspection file created by DeviceBuilder.
    • .c: The C code that includes all the resources plus the code to interface to the glade GUI. This code can be copied over the C code created by DeviceBuilder when the gen2.sh script is run in order to control the hardware.
    • Glade source and graphics that will generate the GUI.

    Setting the OCF Implementation to use

    • The following variables MUST be set to point to the directories related to the OCF implementation you want to use in order to run the convenience scripts described below.

      • OCFPATH - This is the absolute directory where the OCF implementation is installed and where all the convenience scripts are found. (This is typically /home/my_user_name/iot or /home/my_user_name/iot-lite)
      • OCFSUBPATH - This is just the final part of OCFPATH, but it is necessary as a way to get the set_implementaion.sh script to work correctly. (This is typically /iot or /iot-lite)
      • PATH - This is the normal search PATH, but it will have OCFPATH prepended to it so the scripts can be found.
    • source set_implementation.sh (/iot or /iot-lite) - This will switch the implementation of OCF to use (IoTivity or IoTivity-lite right now). It sets some environment variables that MUST be set for all of the scripts. IT IS CRITICAL to use the "source" command to run this script. That makes it work in the current bash context rather that a temporary one.

Building and Running Projects

A number of convenience scripts have been written to make the development cycle easier.

  1. Run the following development cycle as needed
    1. create_project project_name - create a new project and name it anything you want.
    2. This isn't a script, but you need to "cd project_name" to run all the other scripts.
    3. Copy the setup.sh from the directory of the sample you want to install into the current project directory. (In the Emulator-Code repository)
    4. ./setup.sh - This will load all the necessary stuff to build and run the sample project.
    5. edit_input2.sh - edit the device description input file (project_name.json) if necessary.
    6. gen2.sh - generate the code, introspection file, PICS file, and onboarding file from the device description file.
    7. build2.sh - compile and link everything
    8. edit_code2.sh - edit the server source code if necessary.
    9. reset2.sh - reset the sever to RFOTM by copying a fresh onboarding file
    10. run2.sh - run the currently compiled server in the appropriate directory
  2. To test the project, you will need to run a client. Here are some options.
    1. Discover, onboard and control the server using OTGC
    2. Discover, onboard and control the server using DeviceSpy
    3. Test the server using CTT
  3. If you want to modify the glade GUI, run glade and open the following file:
    1. project_name/bin/glade/window_main.glade