I am one of the three main people working on the PS2 controller project. I believe Derek emailed First and asked about the controller being a “Portable computing devices” and First said that it was okay, but that of course the rules might be different in the next game. This is all assuming that the circuit can grab power from the OI, I believe.
I coded the asm on the pic chip (about 250 lines I believe), and will post it as soon as I completely fix it up. The circuit connects one of the digital outs (aux I believe) directly to ground. Because it is impossible for the normal joysticks to do this (they only uses different digital outs), the software on the robot should be able to figure out if a normal joystick or the PS2 adapter are plugged in, without requiring a physical switch on the OI or the robot to be programmed in only one mode. This would possibly allow hot-plugging of what is controlling the robot, assuming that one disables the robot when changing the cords.
So far if the PS2 controller is not pluged in to the circuit, or if it is not in analog mode, the circuit will output “nothing” to the OI (i.e. don’t move the wheels or do anything). Hopefully in the future the circuit will be able to automatically put the PS2 controller in analog mode, like some PS2 games. This way the driver won’t have to hit the “analog” button every time they turn on the OI.
The two digipots are ds1267’s. Each digipot IC contains two 256-step digital potentiometers. The microcontroller is a pic16f688. Basically, the PS2 sends all its data digitally in serial to the microcontroller over one pin. This is how even if the PS2 controller uses 10k pots (which I’m not sure about) the circuit would still output using the correct 100k pots. L1, L2, R1, R2, the diamond, the circle, and if the driver is pressing down on the joysticks are sent from the PS2 controller to the OI. This is done by sending these eight digital inputs over two analogs. This is done by setting the 4 most signifigant bits of each analog (aux and wheel) to the correct value, and setting the least signifigant bits to 0111. This allows the “value” of the analog to vary by +8/-7, and have it all still work. The analogs “x” and “y” are used for the y value of the left and right PS2 joystick, respectively.