I want to know what operating system NOKIA smart-phones use? Which programming language is used to write it and is it possible to do kernel level programming for these systems? Can we use C codes to change the system software? Libraries are available or not? I have never coded for mobile phones. So if possible give me a link to the pages where these topics are discussed in detail. Thanks in advance.
EDIT: I want the details for NOKIA s60 v3 and v5.
From http://en.wikipedia.org/wiki/Nokia_S60:
The S60 Platform (formerly Series 60 User Interface) is a software platform for
mobile phones that runs on Symbian OS.
The S60 software is a multivendor standard for smartphones that supports
application development in Java MIDP, C++, Python and Adobe Flash.
Note that you'll have to register as a developer or jailbreak the phone:
(S60v3) uses a hardened version of Symbian OS (v9.1), which has mandatory
code signing. In S60v3, a user may install only programs that have a
certificate from a registered developer, unless the user disables that
feature or modify the phone's firmware through third-party hacks that
circumvent the mandatory signing restrictions.
Nokia has Symbian kernel (i don't know about them much) and LINUX kernel like the one in N900 (using maemo and meego) though N900 is considered as a tablet-pc more than a smartphone and it has lots of modified kernels .
Related
Background
In our company we cooperate with manufacturer of machinery, we are developing C++/Qt crossplatform control applications for devices that they produce. In the past, we used to communicate with their devices through USB (virtual COM port). Now we were informed that this manufacturer plans to switch to LabVIEW (USB Data acquisition). Of cause we will receive relevant information in the future, nevertheless I would like to get some information about it and ask you question which i could not find on internet easily.
I am sorry for noob questions.
Questions
1) What is LabVIEW? Am I right that it is not a single piece of device, but bunch of hardware components, drivers and standards?
2) Who is LabVIEW developer? I have read How much time do I need to learn LabVIEW, but I am not sure. Is it a person who puts LabVIEW components together and makes firmware for them. Or a person who develops toplevel user applications that communicate with LabVIEW?
3) I assume that first part from Question2 would be done by our partner company. Second part will be upon us. But who creates communication protocol? Is there any standard way how DAQ communicates with its PC drivers, or is it upon programmer to develop communication protocol?
4) I have found there is driver for linux at National Instruments. Contains this driver some API/libraries that can be included in C++ code in a standard way and utilized to communicate with DAQ?
LabVIEW is a development environment for creating custom applications that interact with real-world data or signals in fields such as science and engineering. LabVIEW itself is a software development environment that contains numerous components:
G Programming: flowchart-like dataflow programming model
Hardware support: Support for thousands of hardware devices like scientific instruments, data acquisition devices, sensors, cameras, ...
Analysis and technical code libraries: Libraries for signal processing, communication, file I/O, control algorithms, ...
UI components and reporting tools: controls such as graphs, gauges, and tables to view your acquired data and tools to save data to file or databases, or automatically generate reports
Technology abstraction: Using technologies such as FPGAs, multicore CPUs, ...
Models of computation: When G is not appropriate simulation syntax, textual math, statecharts, component-level IP (CLIP) nodes, DLL calls, ... are available
LabVIEW is developed and maintained by National Instruments. It stands behind LabVIEW with comprehensive support, training, and certification options.
LabVIEW makes the process of integrating hardware much easier by using a consistent programming approach no matter what hardware you are using. LabVIEW has freely available drivers for thousands of NI and third-party hardware. In the rare case that a LabVIEW driver does not already exist, you have tools to create your own, reuse a DLL or other driver not related to LabVIEW, or use low-level communication mechanisms to operate hardware without a driver.
LabVIEW is also cross-platform and allows you to deploy your code to many different computing platforms like popular desktop OSs (Windows, Mac, and Linux), embedded real-time controllers, ARM microprocessors, and field-programmable gate arrays (FPGAs).
By the sounds of it you don't need to learn LabVIEW (which is a pity), but you need to learn daq-mx the hardware driver suite by National Instruments. I have no experience with the Linux version (which is a trimmed down or base version of the Windows one), but it basically is a set of dll's or so's that allow you to communicate with their hardware. Try to find out what hardware they are going to use and see if daq-mx base supports simulated devices.
Is there an easy howto on writing C++ app for Samsung Smart TV that should be able to run in background (so not an HTML/JS applet) and access /dev/ttyUSBx device plugged in the TV?
Do they have some API to access /dev/ttyUSBx or it will be a simple Linux app? Do they allow to load such apps? Is there a toolchain to compile such apps?
At least according to Samsung, "No."
Q: Do you support C++ in the SDK?
A: No, Samsung platform only supports web technologies based apps (JS, CSS, HTML, FLASH)
http://www.samsungdforum.com/Support/FAQList?page=1&faqCateID=2
In the SDK 4.5 will include Native Client technology, NaCl, Currently supported languages are C and C + +. For more information: http://www.samsungdforum.com/Guide/d17/index.html
For Samsung SmartTVs you cannot use C++, the only allowed language/technology is HTML/JavaScript/CSS and Flash (not used much).
Majority of the applications are JavaScript based.
Might be you can have some exclusive agreement with the Samsung, since e.g. Skype is most probably not developed in JavaScript and the AngryBirds I heard are C++ as well.
BR
STeN
What is involved with deploying OpenGL applications on a Windows Mobile device? Obviously we can't assume that all the devices have existing OpenGL drivers. Are there any best practices? Would it be reasonable to expect to be able to use this for something other than hobby type applications?
Not really an answer. Just sharing some of the links I found in the web:
+ Samsung OMNIA OpenGL ES/DirectX support, a thread in MSDN forum
+ OpenGL compatibility layer for Samsung Omnia II, a project in SourceForge
+ Some very relevant insights from Joel Ivory Johnson on the topic
My short conclusion is, support for OpenGL ES/DirectX depends on the OEM / hardware manufacturer. there is no general answer for all Windows Mobile devices.
You can either ship your application with a software renderer of your choice as a fallback if it fails to detect the existence of manufacturer's optimized implementation; or simply create separate package/installer that targets that specific device. I think you will still be able to have the same code base this way.
I want to start learning drivers programming under windows .
I never programed drivers , and i am looking for information how to get started .
Any tutorials ,links ,book recommendations , and what development tool kit i should start with ? (WDF will be good one ?)
I really want to program following clock link text
Thanks for your help .
I would start by downloading the windows driver kit (WDK).
Afterwards, you decide which kind of driver you want. FileSystem driver? (probably not), RS-232 driver? usb driver? They all follow different rules and quirks.
The WDK comes with examples drivers for most kinds of drivers and should get you on track fast.
To interact with USB hardware you would be best served by looking at WinUSB or the Usermode Driver Framework. Usermode drivers are orders of magnitude easier, being able to use a C++/COM(kind of) framework and a normal debugging environment.
Writing kernelmode drivers should be reserved for stuff like video card, disk, and other latency/throughput sensitive drivers.
An even easier method would be to use libusb-win32 which is a C library that makes talking to a USB endpoint almost as easy as writing data to a file.
Must see resource for windows driver development, of course as addition to the WDK mentioned by Eric.
I'm a long time Windows developer, and it looks like I'm going to be involved in porting a Windows app to the Mac.
We've decided to use Flex/Air for the gui for both sides, which looks really slick BTW.
My Windows application has a C++ DLL that controls network adapters (wired and wireless). This is written using the standard library and Boost, so most of it should work cross platform.
On the Mac, what IDE/complier do most folks use if they want to write C++? Also, can someone provide a pointer to whatever APIs the Mac has that can control WiFi adapters (associate, scan, disconnect, etc)?
Xcode is the IDE for Mac OS X, you can download the latest version by joining the Apple Developer Connection with a free Online membership.
I don't believe there are any supported APIs for controlling wireless networking adaptors. The closest thing would be the System Configuration framework, but I don't know if it will let you do everything you want.
Also, I would strongly recommend against trying to use Flex/Air for your application's user experience. It may look slick to you on Windows as a Windows developer, but when it comes to providing a full Macintosh user experience such technologies aren't always a great choice.
For one example, I think Air applications don't support the full range of Mac OS X text editing keystrokes. While not all Mac users will use all keystrokes, for those people used to them trying to type in a text field that doesn't handle (say) control-A and control-E to go to the beginning and end of field is like swimming through syrup.
For a new application that needs to be cross-platform, I'd strongly consider building the core logic in C++ while using Cocoa on the Mac and WPF on Windows to get the best user experience on each platform. Both Mac OS X and Windows have modern native user experience technologies that their respective users are getting used to, and also have good ways for C++ code to interoperate with these technologies.
The de-facto OS X IDE and compiler is Xcode. It comes with every Mac, you just install it from the OS X install CD.
Apple's developer site is the place to get more information on OS X APIs
Xcode and a custom GCC I believe...
xcode is the hotness, as people have already pointed out.
Having maintained a windows/mac codebase in the past, take a look at MVC.
So long as you keep the background logic distinct from the UI and from the platform-specific stuff (like file handling, networks, drawing to the screen, etc). That way, when you want to go to Linux in the future, you just have to write those platform specific components.
As for mac networking, are you on the level of connecting and so forth? Why not just let the OS handle that, and then you just see what connections are available? Why bother with whether or not the connection is wired or wireless? Because the OS has a lot of those tools already built in and users are used to making sure that the connection is there to do work, it seems odd to have an extra program to want to manipulate the network.
Xcode is used a lot, as far as I know the combination editor (e.g. Textmate), command line gcc is in fairly heavy use too. (that's what I do on OS X)
For all API needs head to Apple's developer site e.g. the networking API's