[Opendispense] UI design

Bernard Blackham bernard@blackham.com.au
Wed Aug 6 15:36:03 2003


Greetings,

Here's a brain dump of my plans for the UI. Please rip it to pieces.  :)

Main menu:
  - Coins inserted:
    - Take a selection number & act like a normal vending machine.
      Drinks may be dispensed for $1.
      The door may not be dispensed, no matter how much is put in :)

  - 5-digit UID entered:
    - Say "Welcome <username>. Enter PIN."
      Verify PIN number.

      - If money is dropped in, display the value and wait for
        either:
          0 to be pressed - credit the account.
          RESET or the coin return lever - refund the money.

      - If a selection is entered, dispense it. A selection can be:
         * row/column of vending machine item
         * special numbers denoting door, drinks, or money (withdrawl)

  - Door opened:
    - Read in a selection number, a price and/or a count
      for setting the levels of stock in the database.

And return to the main menu after any of these operations (so people
with have to authenticate several times to do multiple
transactions) - bad thing?

Can anybody pick any holes in this interface, or anything else
they'd like to see in it?

The machine will need to talk to the server (mermaid) for the
following reasons:
  - authenticate a user (send username/pin, receive ACK/NACK).
  - obtain price of a slot (send slot number, receive price).
  - send a dispense request (send slot number/cash amount, receive
    ACK/No Money/Not authorised).
  - receive a dispense request (receive a slot number/cash amount to
    drop out, send back amount of cash actually dropped out (in case
    of no cash))
  - entering stock counts/prices from the vending machine panel to
    update the database within the server
  - notification of motors failing or some other hardware fault

So a server side program will be required to chat with dispense
itself, and authenticate/validate all requests that happen. It is
then the server's responsibility to send the command to the
appropriate device (vending machine, coke machine, door).

Taking this approach does leave a fair bit of spare RAM on the
board, and I'll understand if people call it the wimpy way out to do
most things server-side :)

Regards,

Bernard.

-- 
 Bernard Blackham 
 bernard at blackham dot com dot au