HapticLib  0.7
Haptic Feedback Library for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Main Page

Introduction

Welcome to the HapticLib documentation repository.

HapticLib is a haptic library for embedded systems based on microcontrollers like ARM, MSP430, AVR, PIC.

Haptic feedback is obtained driving multiple vibro tactile devices connected to the embedded system.

All the documentation about HapticLib can be found here; some of it is auto generated from source code, so it will always reflect the latest version of the code.

Download the latest version of HapticLib.
Download the PDF version of the documentation.
Download the KEIL uVision4 workspace package updated to the last release version.

News

The official HapticLib wiki has been setup.

The main features added to the last version of HapticLib are:

  • Multi-Haptor capability! Now HapticLib can manage multiple haptors simultaneously!!!
  • Formalized a new Template for the pattern generators.
  • Big changes everywhere to reflect new multi-haptor architecture.
  • Started Platform Specific Module documentation section under Architecture page.

See the Changelog for a detailed list of changes from last version.

Architecture Overview

How HapticLib is structured and how all the pieces work together.

The library is developed with modularity in mind. The functional domains are decoupled and kept separate to allow for easy extensibility.

The main modules are:

  • User API
  • Platform Specific
  • Pattern Generators

To know more:

For Users of HapticLib

What to setup to develop an application using HapticLib in different environments.

Specific instructions are provided for Linux and Windows OS.

Setting up the environment to work with HapticLib can be hard, that's why a detailed guide has been created to help the user get up and running through the components needed and start coding his application as soon as possible.

For Developers of HapticLib

The internal details of HapticLib.

This page is useful for developers who want to modify or extend the HapticLib library.

Detailed description on some techniques used inside HapticLib is given.

For example, the Pattern Generator Template is a useful tool to use to easily integrate new patterns inside the library.

HapticLib also offer Debugging Features; it is a set of tools very handy, but attention must be paid to avoid problems.

For details,

Changelog

List of changes between versions of HapticLib.

v0.7

  • Added support to KEIL uVision4 IDE. Now development can be done using this IDE (and its toolchain)
  • Minor fix to library code to remove errors when compiling with armcc.
  • Fixed problem on HapticLevel Demo: changed SPI interface to I2C.

v0.6

  • Added HapticLevel Demo (need to be tested with actual interface)
  • Completed documentation on Architecture page.
  • Completed documentation on Developer Guide page.

v0.5

  • Implemented new Multi-Haptor architecture.
  • STM32VLDISCOVERY now supports MAX_HAPTORS=4, and will raise in the next releases.
  • Reorganized almost data structures to reflect new architecture.
  • Formalized a new pattern generator Template ( initiator/continuator).
  • Added data structures to increase code readability and compiler check enforcing (to work around void* argument passing).
  • Fixed send_int() to skip leading zeros from printing.
  • Fixed send_int() bug preventing 0x0 to be printed at all.
  • Moved the Pattern Scheduler in the User API module.
  • Updated all the demos to make use of the new Multi-Haptor capability.
  • Cleaned STM32VLDISCOVERY Platform code. Now The Timers are used in a cleaner way.
  • Moved the haptors GPIO to stop interfering with the User LED and Debug LED.
  • Fixed a bug in the Makefile that prevented Release version to fully work.
  • Fixed a bug in the Makefile that skipped updated .bin target from being built.
  • Started Platform Specific Module documentation section under Architecture page.
  • Restructured directory layout for patterns: now each pattern has its own sub-directory.
  • Restructured directory layout for platform: now each platform has its own sub-directory.
  • Updated demos Makefile to the new directory structure.
  • added utility function to convert duty cycles honoring min_duty and max_duty.
  • Almost completed Architecture documentation page.

v0.4

  • Created CVS Repository to track code versioning and team development.
  • Moved SysTick configuration from hapticlib.c to platform specific code.
  • Moved debugging support code from hapticlib.c to hl_Debug.{h,c}.
  • Single-Haptor working implementation of the haptic "Impact Pattern".
  • Detailed documentation on "Impact Pattern" with theoretical references.
  • "Impact Pattern" samples results from Matlab script provided.
  • Standardized "Pattern Generators" implementation and documentation.
  • Created a Pattern Generator Template to use as starting point to create new patterns.
  • Cleaned the pattern header file inclusion system to flawlessly export pattern specific symbols to user program.
  • Added preliminary implementation for multi-haptor support. Now the API has changed, but the Platform Specific code still doesn't use multi haptors.
  • Cleaned Debugging features inclusion system.
  • Updated and expanded code documentation to reflect all code changes.
  • New structure for Library documentation.
  • Expanded Library documentation.
  • Increased granularity for PWM duty-cycle. Now there are 65535 values.
  • bug fixes.

v0.3

  • Makefile now eclipse friendly.
  • Makefile now works fine with Windows (needs basic unix commands [cygwin]).
  • Other Makefile bug fixes.
  • Elegant modularization of pattern generation functions using function pointers.
  • Created directory structure to insert new patterns.
  • Code documentation now is in sync with code.

v0.2

  • Cleaned the Makefile structure.
  • Added Demos/Project_Template skeleton for new applications.
  • Moved SysTick configuration inside hapticLib.c.
  • Fixed bug on conditional code pre-processing with HL_DEBUG symbol.

v0.1

  • First version of the library.

Additional Info

Copyright Notice and License Terms and Conditions

Copyright (c) 2012, Leonardo Guardati leona.nosp@m.rdo@.nosp@m.guard.nosp@m.ati..nosp@m.it
Copyright (c) 2012, Silvio Vallorani silvi.nosp@m.o.va.nosp@m.llora.nosp@m.ni@s.nosp@m.tudio.nosp@m..uni.nosp@m.bo.it

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Version:
0.7
Authors:
Leonardo Guardati
Silvio Vallorani
Date:
2012