How to use twin oaks DDS for an iOS app to communicate a non-iOS device? - data-distribution-service

We are using Twin Oaks DDS for windows. Can anyone help me in understanding how to use twin oaks DDS for iOS app to communicate with a non-iOS device??
Thanks,
Ravi Kumar

In general there are no special requirements for using CoreDX DDS from Twin Oaks to communicate between an iOS device and a non-iOS device. CoreDX DDS (as with most other DDS implementations) provides for platform independence.
You will need to link in the CoreDX DDS library (specific for the target hardware) into your iOS app, and use the DDS programming API to create publishers and/or subscribers as desired - just like on any other run-time platform.
The default transport mechanism of CoreDX DDS [the Real-Time Publish Subscribe (RTPS) protocol -- a combination of UDP unicast and multicast] is designed to support typical LAN environments, and will work well over WiFi. If you intend to communicate over cellular networks, be aware that the carrier may be using NAT or Firewall configurations that conflict with the standard UDP transport. In this case, you may consider using the TCP based transport.

Related

How to do Homekit Software Authentication?

My company had developed his own smart home hardware which uses MQTT protocol. We can't use any Apple Authorization Coprocessor chip in our hardware. I have heard the apple had released Software Authentication for HomeKit.
But I searched a lot but not got how to do that.
I was using homebridge previously but that was a big trouble for supporting all devices. Can anyone please give me steps for how to do Software Authentication for HomeKit.**
Software or hardware authentication is used to verify with Apple that the accessory is an official "Made for iPhone" product. It's stands apart from the HomeKit Protocol that is specified here.
When your company wished to make official HomeKit Accessories, you must enroll your company to the MFI Program. (This is different than the Developer Program for making apps). When you are enrolled, you'll also get all the documentation needed for the Software Authentication.
Keep in mind that the software authentication is only an alternative so you don't have to use the hardware authentication chip. You still have to comply to all the requirements and rules of the HomeKit Protocol.
You are stating that you are using MQTT. Officially this can't be used to control your accessories with HomeKit. HomeKit must communicate directly with it's own protocol to the accessory. When you are using something like a bridge (What Philips Hue is doing). Then you may only control non IP or Bluetooth devices with that bridge. Please see chapter bridges from the specification. At the time of writing this is chapter 2.5.3.2 from Non-Commercial version R1: Accessories that support IP transports, such as Wi-Fi, must not be bridged.

What is the difference between Weave and Openthread?

I would like to work on Weave but I noticed that Nest has open sourced Openthread instead. I would like to get my hands dirty with Openthread but if someone can answer these questions for me I would really appreciate that.
Is one preferred over the other for certain applications. If so, what are they?
Will devices running Openthread be directly compatible with ones running Weave?
Will these devices be able to communicate with Android devices as is or is future support in Android being planned?
What soc's or emulators can I test Openthread on?
Thanks in advance!
First Question
Succinctly, in terms of the OSI model:
Thread is a network technology that defines layer 2 (link-layer) and layer 3 (network-layer). Thread gives your embedded device IPv6 interface with some nifty capabilities, such as fault-tolerance, mesh networking, and low power consumption.
Weave is (for the most part) a layer 6 protocol, like CoAP or HTTP. It is a protocol that applications running on embedded devices can use to communicate with each other. It requires an IPv6 network interface, which could be provided by ethernet, Wi-Fi, or Thread.
It is important to differentiate OpenThread and Thread. OpenThread is an open-source implementation of the Thread standard.
Both technologies are designed to be used (albeit in different ways) in residential settings on the following loose categories of embedded devices:
Embedded devices that need to be able to reliably communicate with each other under adverse conditions, like a power outage or a fire.
Battery-operated embedded devices that need to be able to last for many years without changing or recharging the battery.
Sensor networks for monitoring things like temperature, motion, humidity, etc.
Second Question
The implication of your question is that the two technologies are mutually exclusive, or that they somehow solve similar problems. As the cute naming implies, Thread and Weave are complementary technologies. Weave needs a network interface to communicate with other devices, and Thread provides one.
Thread is like Wi-Fi in this way. Wi-Fi doesn't define the protocols that run over it. For example, just because a smart thermostat and a smart light switch have Wi-Fi radios doesn't mean that they can communicate with each other. It will be a similar situation with devices that have Thread-compatible radios.
Third Question
While there is no particular reason why you would not be able to use Thread or Weave (or both!) to communicate with devices running Android (or any other operating system), the the devil is in the details: there is no one-size-fits-all solution.
That being said, one way is to use IPv6 routing: Thread is based on IPv6, so if you have a Thread border router, you can allow devices on a Wi-Fi network to directly communicate (via IPv6) with devices on the Thread network.
Fourth Question
In addition to the POSIX simulator, the CC2538 is now an officially supported hardware platform. Support for Dialog's SmartBond™ SoC family of chips is currently provided directly by Dialog.
it might help to first better understand Thread and what it is trying to solve. Designed for the home, Thread is an IPv6 networking protocol built on open standards for low-power 802.15.4 mesh networks that can easily and securely connect hundreds of devices to each other and the cloud. This is different than Weave, which is an application protocol. Multiple application protocols can be developed on top of Thread, including Nest Weave. The Thread Group has a nice technical overview of Thread on their site.
Now to your specific questions:
You should use OpenThread if you're looking for an open source low-power, ipv6-based mesh networking protocol to build upon for your home connectivity application protocol
That really depends on what you mean. Any application protocol built on Thread should be compatible at the network layer with OpenThread, assuming they are targeting compatible versions of Thread.
One of the key design goals of Thread is being able to allow the Home Area Network to reliably communicate to the cloud through Border Routers. We demonstrated an Android app controlling a Thread end device from a Android. Here is a video.
You can find a CLI simulator in the /examples folder. At the time of this writing, OpenThread is still rather new - however we expect to see various SoCs officially supported from our silicon launch partners. Watch the repo for more updates.

communication between two phone via USB

I want to communication between two different android phone via USB. I look at Google SDK guide I don't know how can i do.Somebody can give me some suggests ? Thank you very much !
The USB-Standard requires to work as host-client-mechanism. This means in particular, that you usually have a host-controller (for example inside your PC) which a client (USB-drive, MP3-player, mobile phone) can connect to.
The host is responsible for negotiating and establishing a connection. If you want to connect two clients with each other, one of them must Support USB-On-The-Go to serve as a host with limited capabilities.
From Wikipedia
The design architecture of USB is asymmetrical in its topology, consisting of a host, a multitude of downstream USB ports, and multiple peripheral devices connected in a tiered-star topology. Additional USB hubs may be included in the tiers, allowing branching into a tree structure with up to five tier levels. A USB host may implement multiple host controllers and each host controller may provide one or more USB ports. Up to 127 devices, including hub devices if present, may be connected to a single host controller.[20][21] USB devices are linked in series through hubs. One hub—built into the host controller—is the root hub.

Is there something like a URI for USB devices?

I'm wondering if there is a specification around to address USB devices like:
usb://...
Does anyone know?
There is a URN format which any device which supports the Universal Plug-and-Play protocol can use to advertise its capabilities:
When a device is added to the network, it multicasts discovery messages to advertise its root device, any embedded devices, and any services.
For example:
urn:schemas-upnp-org:device:deviceType:v
urn:schemas-microsoft-com:device:MediaCenterExtenderMFD:1
urn:schemas-wifialliance-org:device:WFADevice:1
urn:schemas-upnp-org:device:BinaryLight:1
urn:wifialliance-org:serviceId:
urn:microsoft-com:serviceId:NULL
urn:upnp-org:serviceId:SwitchPower:1
References
Remote Experience Advertisement Protocol: Appendix B: UPnP Device Description
Writing a UPnP Service
RFC 7255: Using the International Mobile station Equipment Identity (IMEI) Uniform Resource Name (URN) as an Instance ID
WFA Device 1.0 (pdf)
UPnP Technical Basics: UPnP Device Architecture (UDA) (pdf)
Nodejs implementation of the UPnP Device Architecture 1.1
Zoltan Balazs: The real risks of the IoT security nightmare (pdf)
Learning IoT Security: Jan 2016 (pdf)
Accenture Security Call to Action: IoT PoV (pdf)
The QName URN Namespace
URIs, URLs, and URNs: Clarifications and Recommendations 1.0
URL vs. URI vs. URN, in More Concise Terms | Damnhandy
Yes. Per kcmshell5 kcm_printer_manager, literally usb://.
https://learn.microsoft.com/en-us/dotnet/api/android.hardware.usb.usbaccessory.uri?view=xamarin-android-sdk-13&viewFallbackFrom=xamarin-android-sdk-9 may additionally provide USB URIs, but I have not evaluated it.

Connecting peers via USB OTG

my problem is to connect two identical devices with OTG-capable USB interfaces. Is this a simple giveaway or do I have to start and stop host- and device-mode manually with an arbitrary timing pattern so that eventually one is hit in device mode when the other one is an OTG host? From skimming over the APIs of several USB-stack producers it is unclear to me if symmetrical connections are possible at all.
regards,
slarti
PS: the device is an AVR32
The official cable has a "jumper" in the A end that tells the device it is plugged into to be the host. The OTG Supplement also includes a Host Negotiation Protocol which allows the two dual-role devices to interchange roles.