Archive

Posts Tagged ‘Testing’

Android Developers Conference 2012 (AnDevCon III) Schedule

January 20th, 2012 No comments

The full schedule for AnDevCon III (14-17 May 2012)  has finally been released with 42 different classes and several workshops.

The sessions will be organized into five subject area:

  • Developer Essentials: These technical classes and workshops are for all Android developers and cover all programming topics.
  • Android Enterprise: These technical sessions cover topics specific to building and managing apps for employees, business customers and partners, such as back-end integration corporate data center communications, ERP or CRM systems.
  • Android Business: These classes and workshops are for entrepreneurial developers who want to learn the most effective ways of distributing and selling Android apps, including how to maximize profit through the Android Market.
  • Android Tablets and beyond: These classes and workshops are specific to commercial devices beyond smartphones, including tablets, Google TV, and other platforms.
  • Embedded Android: These classes and workshops are for developers working close to the hardware, such as on custom devices, or diving deep into the internals of this flavor of embedded Linux.

I’ve gone thru the list and selected 10 classes that I think could be particularly interesting with sessions related to Embedded Android (Sensors, Android Accessories) and relatively recent features/standards such as Google TV, NFC and HTML5,  one session about graphics development (OpenGL, NDK), one about Android testing  as well as the only Android Business session:

  1. Android Sensors: Virtual Sensors, Embedded Level Implementation and Future Directions  by James Steele

    More and more sensors are being included in Android devices. Android provides a common API to access sensors, but effective use of sensor data is more complicated. Performance can vary greatly from platform to platform, and there is no standard sensor suite. Methods to optimize performance and provide a more relevant result are presented. Examples will include using the NDK on commercial devices and creating sensor drivers for a custom embedded Android device.

  2. Talk to Your Toaster: Developing Android Accessories by Dave Smith

    In the last year, the opportunity for Android applications to connect with other devices has exploded. Honeycomb and ICS have brought technologies such as USB, wi-fi Direct and Bluetooth into the SDK as viable modes through which an application can communicate with the outside world.

    This session will address the APIs available in Android to connect with external hardware and the basics developers need to get up and running with each. The USB framework will be explored, including host mode and the Open Accessory protocol. Attendees will also learn about communicating via RFCOMM and device profiles over Bluetooth.

    Although this session is not directly hands-on, sample code for both the Android and firmware side will be provided. Experience and familiarity with embedded development platforms such as Arduino is helpful, as we will be exploring some accessory firmware. An understanding of the basics of USB and/or Bluetooth technology is also a plus.

  3. Protecting Your Android Source Code by Godfrey Nolan

    Due to the design of the Java Virtual Machine (JVM), it is relatively trivial to reverse-engineer Java code from Java jar and class files. While this hasn’t been an issue in the past since most Java files are hidden on the server, it is an issue on Android phones where the client-side Android APK files are easily obtained and just as easy to decompile back into source.

    Come to this session to learn the how and why this is possible by unraveling the APK into DEX files and the tools that are currently available to decompile your APKs back into Java or JavaScript source code with the right click of a mouse. The session will also show some of the security issues that this raises, such as inadvertently allowing people to gain access to credit card information or back-end systems when someone has complete access to your source.

    Open-source and commercial obfuscation tools will be shown as well as other techniques you should be using, such as C++ coding, watermarking and more to stop people gaining access to your Android code.

  4. Android in the Stratosphere: Advanced Development for Near-Space Exploration by Craig Isakson

    Have you ever wondered what the world would look like at 100,000 feet above sea level? Wonder no more. The instructor took a weather balloon, an Android phone and a sense of adventure, and launched Android into near-space.

    This class will explain advanced programming techniques used in Android to perform GPS tracking and data recording, as well as automated camera capturing to document and record flight information. Other topics covered in this class will be utilizing the Google Maps API with custom drawing, SQLite database creation and manipulation, and creating services.

  5. Automating Functional Testing for Android Applications by Stu Stern

    Automated functional testing is crucial to the development of all Android applications. A core suite of automated functional tests provides a solid foundation for rapidly iterating product releases by ensuring that the introduction of each new feature does not inadvertently break pre-existing functionality.

    In this class, we will explore how to use FoneMonkey, a free and open-source tool that automates functional testing of Android applications, to record, edit, playback and verify application functionality on Android emulators and devices. Attendees also will have the opportunity to see how FoneMonkey scripts can be extended with Java or JavaScript to create domain-specific testing libraries that handle arbitrarily complex application usage scenarios. The class will conclude with a look at how FoneMonkey test suites can be run using Eclipse and JUnit, and how FoneMonkey can be run from continuous integration tools.

  6. Advanced Graphical Applications using NDK and OpenGL by Robert Green

    Consumers are expecting more out of their Android devices every day, especially in the realm of graphics. Most modern Android devices carry very powerful GPUs that can produce beautiful graphical animations, provided developers know how to really utilize it.Android ships with Java bindings for OpenGL, but many applications can benefit from the addition of native (C++) high-performance components, and this class will demonstrate a general solution for integrating said components into an Android application. The demo will show an interactive 3D animated character built for Android using mostly off-the-shelf software, but the same techniques can be used to provide an array of modern graphical effects that will be sure to give an application the edge in a competitive market, or provide the foundational knowledge for any highly graphical interactive application on Android.

  7. Ready for the Big Screen – Implementing on Google TV by Jim McKeeth

    Google TV isn’t just a bigger version of an Android phone; it has different inputs, hardware and rules for your application showing up in the Android Marketplace. This session provides the specifics of what your application needs to look great and work on Google TV. It also includes specific examples of implementing applications on Google TV hardware, as well as using handheld Android devices as extensions to Google TV applications.

    This session will show code and applications running on Google TV hardware (Provided an HDTV is available for this session).
    Attendees must have Android application development experience.
    After completing this session, students will have a checklist of what is necessary to build Google TV applications, and details on deploying and debugging applications during development. They will also have specific example code ready for use in their applications.

  8. Building NFC-Enabled Android Applications by Jason Weiss

    Android’s support for Near Field Communications (NFC) offers developers a powerful new metaphor for mobile phone interaction: Physical Touch. NFC supports far more than secure financial transactions. Popular games like “Angry Birds Magic” have already incorporated NFC (you have to touch your phone to another NFC-enabled phone to unlock game levels) to expand the social interaction of mobile gaming, and a new breed of enterprise applications that tout proof of presence for remote workers already exists. Industry research has demonstrated that NFC provides a more efficient and friendlier user experience than QR codes.

    This advanced session will introduce developers to the nuts and bolts of NFC development on the Android platform. Attendees will learn the basics of NFC, including the types of RFID tags that the technology supports, as well as a primer on security concerns and tag storage limitations. Code examples will be provided to demonstrate how programmers can leverage the NFC Data Exchange Format open standard inside their applications for reading/writing data to/from RFID tags. Attendees will also be introduced to the NFC Tag Event open standard for back-office integration.

    Attendees are not required to have an NFC-enabled phone, but they are strongly encouraged to attend with an NFC-enabled handset, such as the Google Nexus S (3G), HTC Amaze (4G), or Samsung Galaxy Nexus (4G), since the Android emulator does not support NFC emulation.

  9. Building HTML5 Apps for Phone or Tablet by Joe Stagner

    HTML5 is truly a cross-platform development platform with its new functionality that can be used to build applications that run when a user is or isn’t online. Doing so, however, requires a change in your design thought process. In this session, we’ll discuss not only the new technologies, but review patterns that will let you write one application to run on devices of different form factors, with or without an active Internet connection.

  10. Android Business Essentials by Nathan Mellor

    Are you an aspiring entrepreneur eager to build a sustainable business based on Android Apps? Learn how to maximize your chances of success without inviting too much stress. Learn some specific things you can do to promote your app and how to do them. The focus is on tools and techniques that will work for a small business or individual, even if you are just one person working out of your home office like the presenter. Learn about:

    • A mindset that could be your biggest obstacle to success (and how to change it)
    • Coming up with ideas and target markets
    • Using tools and people power to get more work done
    • Where to find resources at a low business price
    • Installing and using analytics and tracking to increase profits
    • How to do keyword research to increase profits
    • Maximizing app exposure within the Android Market
    • Specific ways to promote your app outside the market through Web marketing, video marketing and more
    • Communicating with customers through HelpDesk and e-mail newsletters

Beyond the classes, there is also the Embedded Android Workshop (Full Day) by Karim Yaghmour, Opersys:

This one-day workshop is aimed at embedded developers wanting to build touch-based embedded systems using Android. It will cover Android from the ground up, enabling developers to get a firm hold on the components that make up Android and how they need to be adapted to an embedded system.

Specifically, we will start by introducing Android’s overall architecture, and then proceed to peel Android’s layer one-by-one. First, we will cover the Android Open Source Project, the open-source project under which Android’s source code is released. We will then dig into the native Android user space and Android’s power tools, and cover how hardware support is implemented in Android. Given that Android is built on top of Linux, we will also go over some embedded Linux tricks and see how the kernel is modified to support the Android user space. In addition, we will look at the System Server, the Android Framework and core Android applications, and how to customize them.

You can access the full list of classes and workshops on AnDevConv website.

If you are interested in attending AnDevConv III, you can check my previous blog post “AnDevCon III: Android Developer Conference – 14-17 May 2012” for pass information and pricing or go directly to AnDevCon III Registration page.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Design West Summit – 26-29 March 2012

December 12th, 2011 No comments

Embedded System Conference 2012UBM Design announced the schedule and pass pricing for Design West Summit (previously Embedded System Conference) which will now bring 7 summits in one location (San Jose McEnery Convention Center) on 26-29 March 2012:

  • Embedded Systems Conference & Exhibition -  Conference Dates:  March 26 – 29, 2012.  Exhibition Dates:  March 27-29, 2012. (See Details below)
  • Android Summit – March 28, 2012 -  Everything Android  from embedded design to Apps development.
    • Android Certification Program
    • Android Speed Training
    • Android Fundamentals Course on the Expo Floor
    • Android Conference Program
  • Multicore DevCon- March 27 & 28, 2012 – Embedded multicore and multimedia.
    • 7th annual Multicore Conference Courses
    • Multicore Expo Floor Zone
    • Multicore Fundementals Courses
    • Keynote Addresses
    • Industry Addresses
    • Expo floor parties and giveaways
  • BlackHat – March 29, 2012 – One-day conference focused on security in embedded systems.
    • Security Fundementals Course
    • Black Hat Summit Conference Courses
    • Security focused presentations in the expo floor theater
    • Keynotes and Industry Addresses
    • Expo Floor Parties and Giveaways
  • Sensors in Design – March 28-29, 2012 – Technical presentations on the application of sensor technology in real-world products.
    • Sensors Conference and Expo Programs
    • Sensors Fundementals Course
    • Sensors expo floor theater events
  • DesignMED - March 28, 2012 – Medical electronics design and regulatory issues.
    • DesignMED zone on the expo floor
    • DesignMED Fundementals course
    • DesignMED Conference courses
    • Special presentations iand teardowns in the expo floor theater
  • Designing with LEDs – March 27, 2012 – Design of high-brightness LEDs in lighting and illumination
    • Conference and Expo exclusive for LED Summit
    • LED Fundamentals Course
    • Keynote Addresses
    • Industry Addresses
    • Expo floor parties and giveaways

The detailed schedule is not finalized yet, but key tracks for the Embedded System Conference will include:

  • Analyzing, Debugging, and Agile Development:  Software and hardware methodologies that rely on agile development, static analysis, model-driven tools and other techniques to maximize system performance while avoiding costly and time-wasting mistakes.
  • Best Practices; Managing, Process and Quality: From concept to production-worthy code and systems,  “best practices” information for engineering project management, maintaining quality and avoiding common s/w and h/w mistakes.
  • Challenges and Solutions in Embedded Design: Experts describe myriad successful outcomes to embedded design’s most difficult problems. An emphasis on case studies and real world examples.
  • Connectivity and Networking: Understanding and implementing wired and wireless Internet,  “cloud”,  local interface and network connections to and within embedded systems.
  • Design, Test, Prototype and System Integration:  Time to market: a whole-system approach to software and hardware, focusing on modeling, simulation (including virtual), testing  and software/hardware system integration and test.
  • FPGAs in Embedded Systems: FPGAs with intelligent peripherals, multicore processors, DSPs and on-the-fly reconfiguration can replace entire PCBs. Here’s what you need to know about the latest instantiations, programming, IP and coexistence with other CPUs.
  • Hardware, Architectures, and I/O:  Hardware-centric approaches to small form factors, HMI displays, multicore, popular CPUs and microcontrollers,  reference design examples, more.
  • Linux, Android and Open Source:  Evaluating, understanding and using embedded Linux, the Android platform, and other popular open-source software.
  • Low-Power Design: It’s all about balancing low power, performance and cost – from processor selection and low-power modes, system design, tips and tricks, and writing efficient software.
  • Microcontrollers and SoCs in Embedded Designs:  Understanding, selecting, designing, programming, and using MCUs and SoCs in embedded. Sessions vary from coding the latest ARM (and other) processors to designing the entire system with I/O and sensors.
  • New Directions in Software, Processes and Tools:  Changes are coming to modern languages like C, C++, Java and others, and common IDEs like Eclipse and other tool suites keep evolving to meet new requirements. Tune in to stay plugged into what’s new.
  • Programming, Languages and Techniques:  This track offers insights that will help you write code that’s more reliable, maintainable, efficient and/or portable using the most popular languages for developing embedded systems.
  • RTOS and Real Time:  Fundamental real-time concepts, selecting and understanding an RTOS, developing and verifying real-time systems.
  • Security and Safety Come to Embedded:  Examining security and malicious attack mitigation for connected embedded systems; and aspects of developing, testing and deploying for life- and safety-critical systems.

If you plan to only access the expositions, the pass (Expo Pass) is free and you only need to register. For details about the other pass see table below. Super Early rates are available until the 18th of December 2011. All pass includes an 10.1″ Android tablet.

Super Early
Rates Expire
12/18/2011
Early
Rates Expire
2/19/2012
Advanced
Rates Expire
3/25/2012
Onsite
Rates apply
3/26- 3/29 2012
All Access (Recommended – Best Value + Offical Show Tablet) $1,999 $2,299 $2,599 $2,799
ESC Only Pass (4 Day ESC Pass) $1,499 $1,699 $1,999 $2,299
2 Day Pass (Tuesday-Wednesday OR Wednesday – Thursday ONLY) $1,099 $1,299 $1,599 $1,899
1 Day Pass (One Day access Tuesday-Thursday) $599 $799 $899 $999
Expo Pass FREE FREE FREE FREE

Further details are available on Design West Official Website.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Best Practices for Writing Safer C Code

September 13th, 2011 4 comments

Thomas Honold wrote an article published on EETimes giving 17 steps to safer C code. Not only this article provides tips to write safer C code, but I believe those steps are simply best practices when writing C code for embedded systems as they shorten the software life cycle by making it easier for a software team to write, debug and maintain code and by improving the software QA procedure.

Here’s a summary of the 17 steps to achieve safer C code:

  1. Follow the rules you’ve read a hundred times:
    • Initialize variables before use.
    • Do not ignore compiler warnings.
    • Check return values.
  2. Use enums as error types.
    Define an ENUM_MAX value at the end, so that the code to check the range does not have to be modified each time you add a new error code.
  3. Expect to fail
    Always assume there will be an error and set to default return value to error.
  4. Check input values: never trust a stranger
    Check all input values for consistency at the outmost layer of your software architecture.
  5. Write once, read many times
    Write code to make it readable by others. Declare meaningful variable names and add plenty of comments.
  6. When in doubt, leave it out
    If you are not sure you need a specific function in your API do not add it. If somebody uses it and you later decide it’s not necessary to keep this function, it will break his code.
  7. Use the right tools
    Use an IDE or editor that suits your need (e.g. Ultraedit), build tools (e..g GNU Tools), version control system (e.g. svn, git) and possibly a code style checker such as Artistic Style.
  8. Define the software requirements first
    if you don’t define the requirements, you can’t test your final software properly and can not determine if you have finished your project.
  9. During boot phase, dump all available versions
    If you have several chipset (e.g. FPGA) that each run its own firmware, so when you boot make sure you display all available firmware versions to facilitate debugging and (production) testing.
  10. Use a software version string for every release
    Make you update your software version each time you release it for testing or production. If your version is stored in the version control repository commit it. The best is to have software version string generated automatically for each build.
  11. Design for reuse: use standards
    Do not create types that are already defined in the standard libraries.
  12. Expose only what is needed
    Do not declare variable or functions globally, if they do not need to. It may lead to naming conflicts,  make your design non-modular or non-thread safe.
  13. Make sure you’ve used “volatile” correctly
    Use the volatile type for a variable shared by an ISR and any other code,  a global variable accessed by two or more RTOS tasks, a pointer to a memory-mapped peripheral register (or register set) or a delay loop counter.
  14. Don’t start with optimization as the goal
    Focus on flexibility first to make it easier to add new features as they are requested and optimize the code for speed or size later if necessary.
  15. Don’t write complex code
    Do not write code that is too complex for readability or maintenance. It’s quite difficult to assess whether a code is complex or not (it’s also subjective), but there are tools to help such as http://www.scitools.com.
  16. Use a static code checker
    You most probably have code rules. make sure you have to script or tools to check those rules or you can be sure they’ll never be checked.
  17. Myths and sagas
    Discard myths such as “you can’t use dynamic memory allocation”, this can be done safely at initialization phase, even though you might have to be careful with malloc during program execution as it can lead to memory fragmentation.

For code examples and more detailed explanations, please refer to the original EETimes article “Seventeen steps to safer C code

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter