Device to Device Copying

Copying a single content module from one device to another device.

User Experience Steps

1. Physical Connection

  • Two devices are physically connected. The latest design (3/15/08) calls for the devices to be connected via a cable, via the special, non-USB, device-to-device port.
  • As long as the cable is connnected, the devices are in copy mode. To go back to single user/device mode, the device cable needs to be physically disconnected.
  • If at any point during the entire copy process, the copy operation is aborted, then the device falls back into this mode, i.e. cable still connected, and goes into step 2.
  • This implies a requirement for a frequent "still connected" keep-alive status exchange between connected devices, on the order of every half second. Only when the keep-alives are no longer being processed does the device goes back to the single user mode.
  • If cables are every disconnected, i.e. keep-alives are miseed, then each of the device responds with the default Talking Book greeting message.

2. Devices Simultaneously Respond to Connection

  • When each device recognizes the connection is made (should be simultaneously), each device plays a short System Audio File (SAF) that says, "Who is giving?"
  • This needs to be a very short SAF since it may be coming from both devices at slightly offset timing.

3. Determination of "Giving" / "Taking" Roles (USB Master determination)

  • When any button is pushed on either device (other than maybe Power Off button):
    • The selected device will attempt to signal to the other device that it is the master.
    • Error condition: If a device receives such a signal but it thought it was the master (from having its button pushed about the same time), the signal is rejected, and one of the devices plays a system audio file saying something like, "Please only push a button on the Talking Book that is giving."
    • The nonselected device (the USB slave, aka "taking") will play a system audio file, "I am taking."

4. The Giving Device Asks for Content to Transfer

  • The selected device, the USB master, (aka "giving") will wait two seconds (to not overlap with the previous audio) and play a file saying, "I am giving. Do you want to give, {plays the title audio segment of the most recently selected content module}? Press Play button if Yes, or select another module" [or whatever other pair of buttons that are intended to function as Yes or No].
  • The choice of the module to announce at this point, i.e. when d2d copy is first activated, should start with the most-recently played module.
  • If the Home or Escape button [we'll see what we come up with for this function] is pressed on either device, this specific copy operation is canceled, but the devices are in still in copy mode as the cables are still connected. Restart at step 2.

5. Finding the Content to Transfer
(For simplicity, only one module can be selected and copy at one time. i.e. there is no "multi-select" and copy.)

  • If any of the up/down/left/right selection button is pressed following the previous prompt, then the normal rule of selection (see selection spec) is applied. As a new content module is selected, that module's title is played in the SAF "I am giving. Do you want to give, {content title}? Press Play button if Yes, or select another module"
  • It's important that the playing of the title can be interrupted immediately and at any time, with either the press of Yes or any of the up/down/left/right selection buttons. If another selection is indicated, the new content module's title is played as quickly as possible. The idea is that one could rotate through the reading of ten content module titles in 3-5 seconds, if one was familiar enough with the voice and/or first word of the title.
  • As long as a selection choice is made instead of Play/Yes, this process continues rotating through titles until
    • a) a Yes is selected (continue to step 6);
    • b) the Home or Escape button [we'll see what we come up with for this function] is pressed;
    • c) the device goes into power saving mode from no button presses, from which it should recover, if still physically connected, to step 4 (where the giving/taking selection has been determined); or
    • d) the batteries die, from which it should, if connected, recover to step 1.

6. Checking Memory Availability of Selected Content

  • If Yes is selected, the size of the selected content module is sent to the slave ("taking book" :-), which responds with a signal to indicate if there is available memory.
  • If there is enough memory, continue to step 7.
  • If not, a system audio file is played by slave device, "I'm too full for that one. Please disconnect us and empty me, or maybe your friend can give me something smaller."
  • If disconnected, each device returns to the state it was in before the connection was made.
  • Until disconnected, the Giving device pauses and repeat "I'm too full for that one. Please disconnect us and empty me, or maybe your friend can give me something smaller."

7. Alert Users of Copying

  • The devices are now both prepared to copy a particular piece of content.
  • The giving book (master) will play an audio file that says, "I am now giving {audio title}. Please leave us alone until we have finished sharing."
  • the device will, at regular intervals, make a low-pitch sound to indicate it is busy.
  • If the file size is 24-48 MB (~ 16-32 seconds at USB 1.1's 12Mbps), it will also play, "This will take just a few extra seconds."
  • If the file size is > 48MB (> 32 seconds xfer), it will play "This is one is very large and will take a minute to share. Please have patience."

8. Errors During Copy
[Need to handle errors related to the copying here.]

9. Successful Copy

  • If the copy was a success, the taking book will play, "I have it and am ready to take something more."
  • Both devices then go to step 4.