Hi Peter,
Use of the JOYSTICK_GetState() is the rigth way to manage the joystick. The status of the joystick is periodically updated by the CircleOS button handler.
The JOYSTICK_state is well defined in the "circle_api.h" as :
enum JOYSTICK_state
    {
    JOYSTICK_UNDEF     = -1,        /*!< Undefined state.                */
    JOYSTICK_RELEASED  =  0,        /*!< Joystick is released.           */
    JOYSTICK_LEFT      =  1,        /*!< Joystick was just pushed left.  */
    JOYSTICK_UP        =  2,        /*!< Joystick was just pushed up.    */
    JOYSTICK_RIGHT     =  3,        /*!< Joystick was just pushed right. */
    JOYSTICK_DOWN      =  4,         /*!< Joystick was just pushed down.  */
    JOYSTICK_RIGHT_UP   =  11,  /*JOYSTICK_RIGHT | JOYSTICK_UP*/
    JOYSTICK_LEFT_UP    =  5,  /*JOYSTICK_LEFT  | JOYSTICK_UP*/
    JOYSTICK_RIGHT_DOWN =  13, /*JOYSTICK_RIGHT | JOYSTICK_DOWN*/
    JOYSTICK_LEFT_DOWN  =  7,  /*JOYSTICK_LEFT  | JOYSTICK_DOWN */
    };
What do you mean by the App is not working ?
And what is the version of your CircleOS ?
Yves