Embedded Devices work !
I just cant stop now. I am so on top!!!
I just spent 4 hours fixing stuff (these socket address byte ordering can be a bitch!) and now I have services being properly advertised using SCPD (althoug it’s reading from the xml still, not using the actual service class internal data) !!
Ok today has been very productive (10 hours of work !): My device shows up in DeviceSpy !! Here’s what I have done today:
– http server listens on each interface
– sends the description doc on each interface
– sends a byebye before advertisement
– sends a byebye on quit
– fixed many issues with sockets and streams
2 words: IT ROCKS !
Tomorrow, I am working on parsing a description doc xml and create the structure, then the SCPD for the services and Description layer of UPnP is done !
Ok I am beat, it’s 5am. I am insane to work on the week-end and so late. Tomorrow I got to spend time with K.
If I can get this done by CES, that would rock. I need to find an ipaq next week….
XML Parser working! 5 hours of work and 20KB later, I have a nice little parser. Thanks to bro (Cho,Kyung Min) and his xmlite. I removed all MFC references as well as std osstream which take more space. I need to remove the vector next to be even more compact…
After spending 2 nights (at least 10 hours total), I have come up with a very very nice solution to my problem of multiplexing sockets and threads. I have made a Scheduler that accepts tasks and perform the tasks in a thread. The tasks must be non blocking of course and yield. So far the ssdp announce and listen can be non blocking and it works! I created 2 tasks. One to announce and one to listen with only one thread!. I now receive my announcements, even though I have only one thread! Ok I dont want to receive my announcements but at least it works! Now I just need to add tasks to listen to incoming requests on my webserver (for each interface) and we have a very basic upnp support with only 1 thread!!!! Ah I love it I love it …
No way I was going to continue the C route. The overhead is too painful. I am back to good old OOP. Finished rewriting the socket and http classes today. I started working on Ssdp messages (Search, Notify and Response) to realize that they are just HTTP requests and responses. The only thing I noticed is that being sent over UDP, the parsing is different. It needs to read the whole datagram and not 1 byte at a time, otherwise it fails. I need to figure out a clean way to abstract that …