the various aspects of the invention will be described in connection with providing functional neuromuscular stimulation for prosthetic or therapeutic purposes . that is because the features and advantages that arise due to the invention are well suited to this purpose . still , it should be appreciated that the various aspects of the invention can be applied to achieve other objectives as well . i . system for providing functional neuromuscular stimulation using a universal external controller fig1 shows a system 10 that makes possible the restoration of function to muscles in the body that are otherwise paralyzed due to lack of neuromuscular stimulation , e . g ., due to spinal cord injury or stroke . spinal cord injury or stroke can break or otherwise disrupt the path or paths by which electrical signals generated by the brain normally travel to neuromuscular groups , to stimulate coordinated muscle contraction patterns . as a result , even through the nerves and muscles are intact , no electrical stimulation is received from the spinal cord , and the associated muscles do not function . in use , the system 10 generates and distributes electrical current patterns to one or more targeted neuromuscular regions . the resulting patterns of neuromuscular stimulation restore desired muscle function in the targeted region or regions . the stimulatation can be achieved by direct application of electrical current to a nerve ( e . g ., using a nerve cuff electrode ), or by indirect distribution of electrical current to a nerve through adjacent muscle tissue ( e . g ., using epimysial or intramuscular electrodes ). as will be described in greater detail later , the system 10 can restore function to a single , targeted neuromuscular region , for example , to upper extremity muscles in the arm , e . g ., to restore hand - grasp functions ; or to lower extremity muscles in the leg , to restore standing or ambulatory functions ; or to bladder and bowel muscles , to restore micturition ; or to muscles controlling ( in males ) erection and ejaculation , or ( in females ) lubrication , to restore sexual or reproductive function . the system 10 can also be selectively operated to restore function to more than one targeted neuromuscular region , making it possible for an otherwise paralyzed individual to use the system 10 to selectively perform not only hand - grasp functions , but also to selectively perform standing / ambulatory and / or bladder and bowel control functions and / or other stimulation functions , as well . the system 10 comprises basic functional components that can be assembled and arranged to achieve single or several neuromuscular stimulation functions . generally speaking , as shown in fig1 the basic functional components for a prosthetic neuromuscular stimulation function include ( i ) a control signal source 12 ; ( ii ) a pulse controller 14 ; ( iii ) a pulse transmitter 16 ; ( iv ) a receiver / stimulator 18 ; ( v ) one or more electrical leads 20 ; and ( vi ) one or more electrodes 22 . as assembled and arranged in fig1 the control signal source 12 functions to generate an output , typically in response to some volitional action by a patient , or a trained partner , or another care giver . in response to the output , the pulse controller 14 functions according to preprogrammed rules or algorithms , to generate one or more prescribed stimulus timing and command signals . the pulse transmitter 16 functions to transmit these prescribed stimulus timing and command signals , as well an electrical operating potential , to the receiver / stimulator 18 . the receiver / stimulator 18 functions to distribute electrical current patterns according to the prescribed stimulus timing and command signals , through the leads 20 to the one or more electrodes 22 . the one or more electrodes 22 store electrical energy from the electrical operating potential and function to apply electrical current patterns to the targeted neuromuscular region , causing the desired muscle function . the basic functional components can be constructed and arranged in various ways . in a representative implementation , some of the components , e . g ., the control signal source 12 , the pulse controller 14 , and the pulse transmitter 16 comprise external units manipulated outside the body . in this implementation , the other components , e . g ., the receiver / stimulator 18 , the leads 20 , and the electrodes 22 comprise implanted units placed under the skin within the body . other arrangements of external and implanted components can occur , as will be described later . in the representative implementation shown in fig2 a system 24 supports multiple prosthetic or therapeutic objectives . for purpose of illustration , in fig2 the system 24 is capable of achieving ( i ) a hand - grasp function in upper extremity arm muscles ; ( ii ) a standing function in lower extremity leg muscles ; and ( iii ) a bladder and bowel control function . to accomplish the different hand - grasp , standing , and bladder and bowel control functions , the system 24 dedicates , for each function , a function - specific external control signal source 12 ( 1 )( 2 )( 3 ), a function - specific external pulse transmitter 16 ( 1 )( 2 )( 3 ), a function - specific implanted receiver / stimulator 18 ( 1 )( 2 )( 3 ), function - specific implanted leads 20 ( 1 )( 2 )( 3 ), and function - specific implanted electrodes 22 ( 1 )( 2 )( 3 ). to control all three function - specific receiver / stimulators , the system 24 employs a single , external pulse controller 26 , which , for this reason , will also be called the “ universal external controller .” in concert with the other function - specific components , the universal external controller 26 selectively achieves all three hand - grasp , standing , and bladder and bowel control functions . for the hand - grasp function , epimysial and intramuscular electrodes 22 ( 1 ) are appropriately implanted by a surgeon in the patient &# 39 ; s arm . the function - specific implanted electrodes 22 ( 1 ) are positioned by the surgeon by conventional surgical techniques to affect desired neuromuscular stimulation of the muscles in the forearm and hand . desirably , the neuromuscular stimulation affected by the electrodes 22 ( 1 ) achieves one or more desired palmar grasp patterns ( finger tip - to - thumb pinching ) and / or one or more desired lateral grasp patterns ( thumb to flexed index finger pinching ). the palmar grasp patterns allow the individual to grasp large objects ( e . g ., a cup or book ), and the lateral grasp patterns allow the individual to grasp small or narrow objects ( e . g ., a pen or fork ). implanted leads 20 ( 1 ) connect the electrodes 22 ( 1 ) to the function - specific implanted receiver / stimulator 18 ( 1 ) in conventional ways . the receiver / stimulator 18 ( 1 ) is placed by a surgeon under the skin on the chest . the receiver / stimulator 18 ( 1 ) receives the stimulus timing and command signals and power from the universal external controller 26 through the function - specific external pulse transmitter 16 ( 1 ). in the illustrated embodiment , the pulse transmitter 16 ( 1 ) takes the form of a transmitting coil , which is secured to a skin surface over the receiver / stimulator 18 ( 1 ), e . g ., by tape . the pulse transmitter 16 ( 1 ) transmits the stimulus timing and command signals and power through the skin to the receiver / stimulator 18 ( 1 ) for the hand - grasp function in the form of radio frequency carrier waves . the electrodes store electrical energy from the carrier waves . the stimulus timing and command signals for the standing function are distributed as biphasic current pulses in discrete channels to individual implanted electrodes 22 ( 1 ). the biphasic pulses provide amplitude and duration electrical signals that achieve the desired coordinated muscular finger - grasp function . because the implanted receiver / stimulator 18 ( 1 ) receives power from universal external controller 26 through the external pulse transmitter 16 ( 1 ), the implanted receiver / stimulator 18 ( 1 ) requires no dedicated battery power source , and therefore has no finite lifetime . the external control source 12 ( 1 ) for the hand - grasp function is coupled to the universal external controller 26 . as will be described in greater detail later , the external controller 26 can support a variety of external control sources 12 ( 1 ), which can be coupled to the controller by cable or by wireless link , as will also be described in greater detail later . in the embodiment illustrated in fig1 the external controller 12 ( 1 ) comprises a mechanical joy stick - type control device , which senses movement of a body region , e . g ., the shoulder , which is therefore also called a shoulder position sensor . the shoulder position sensor can comprise , e . g ., a two axis angle transducer that measures motion of the shoulder relative to the chest . the shoulder position sensor can be secured to the skin of the shoulder in the region of the sternal notch and clavicle using tape . as will be described later , when the user manipulating the shoulder in predetermined ways , the shoulder position sensor generates functional or proportional signals that , when processed according to the pre - programmed rules of the controller 26 , select or deselect either palmar or lateral grasp patterns , proportionately control of the opening and closing of the hand , or lock the hand in a desired grasping position . as will be described in greater detail later , in an alternative implementation , manipulation of input buttons on the universal external controller 26 also can be used to perform these finger - grasp functions . further details of these function - specific components for the hand - grasp function can be found in peckham et al u . s . pat . no . 5 , 167 , 229 , which is incorporated herein by reference . commercial examples of such function - specific components can also be found in the freehand ™ system , sold by neurocontrol corporation ( cleveland , ohio ). for the standing function , epimysial and intramuscular electrodes 22 ( 2 ) are appropriately implanted by a surgeon in the patient &# 39 ; s upper leg . the function - specific implanted electrodes 22 ( 2 ) are positioned by the surgeon by conventional surgical techniques to affect desired neuromuscular stimulation of the muscles in the hip and thigh . desirably , the neuromuscular stimulation affected by the electrodes 22 ( 2 ) achieves a contraction of leg muscles in the hip and thigh to bring the individual to an upright and standing position . in this position , the individual can stand upright and move about , typically with the aid of a walker or arm crutches . implanted leads 20 ( 2 ) connect the electrodes 22 ( 2 ) to the function - specific implanted receiver / stimulator 18 ( 2 ) in conventional ways . the receiver / stimulator 18 ( 2 ) is placed by a surgeon under the skin in the abdomen or thigh . the receiver / stimulator 18 ( 2 ) receives the stimulus timing and command signals and power from the universal external controller 26 through the function - specific external pulse transmitter 16 ( 2 ). as in the finger - grasp function , in the illustrated embodiment , the pulse transmitter 16 ( 2 ) for the standing function takes the form of a transmitting coil , which is secured to a skin surface over the receiver / stimulator 18 ( 2 ), e . g ., by tape . the pulse transmitter 16 ( 2 ) transmits the stimulus timing and command signals and power through the skin to the receiver / stimulator 18 ( 2 ) for the standing function in the form of radio frequency waves . as in the finger - grasp function , the stimulus timing and command signals for the standing function are distributed by the receiver / stimulator 18 ( 2 ) in discrete channels to individual implanted electrodes 22 ( 2 ) and provide electrical amplitude , duration , and interval command signals that achieve the desired coordinated muscular standing function . the external control source 12 ( 2 ) for the standing function is coupled to the universal external controller 26 . as explained earlier in the context of the finger - grasp function , the universal external controller 26 can accommodate input from a variety of other external control sources , either by hard - wire or wireless links . in the illustrated implementation , the external control source 12 ( 2 ) comprises a remote control button accessible to the individual , by which the user ( or care giver ) can select or deselect the standing function . one or more input buttons on the universal external controller 26 itself can also be used to select and deselect the standing function . for the bladder control function , cuff electrodes 22 ( 3 ) are appropriately implanted by a surgeon about sacral nerves that lead to the bladder and bowel . the function - specific implanted electrodes are positioned by the surgeon by conventional surgical techniques to affect neuromuscular stimulation of muscles in the bladder , bowel and urethral sphincter . desirably , the neuromuscular stimulation affected by the electrodes 22 ( 3 ) achieves a contraction of the muscles of the bladder , urethral sphincter , and bowel . after the bladder has contracted in response to the neuromuscular stimulation , it is possible to relax the sphincter muscles , allowing the bladder to empty . implanted leads 20 ( 3 ) connect the electrodes 22 ( 3 ) to the implanted receiver / stimulator 18 ( 3 ) in conventional ways . the receiver / stimulator 18 ( 3 ) is placed by a surgeon under the skin in the abdomen . the receiver / stimulator 18 ( 3 ) receives the stimulus command signals from the universal external controller 26 through the external pulse transmitter 16 ( 3 ). as with the finger - grasp and standing functions , in the illustrated embodiment , the pulse transmitter 16 ( 3 ) takes the form of a transmitting coil , which is secured to a skin surface over the receiver / stimulator 18 ( 3 ), e . g ., by tape . the pulse transmitter transmits the stimulus command signals through the skin to the receiver / stimulator 18 ( 3 ) for the bladder and bowel control function in the form of radio frequency waves . as explained earlier in the context of the finger - grasp and standing functions , the universal external controller 26 can accommodate input from a variety of other external control sources 12 ( 3 ), either by hard - wire or wireless links , to also affect the bladder and bowel control function . in the illustrated implementation , the external control source 12 ( 3 ) for the bladder and bowel function comprises an external remote control device , that can select or deselect the bladder and bowel control function . one or more input buttons on the universal external controller 26 itself can also be used to select and deselect the bladder and bowel control function . further details of these function - specific components for the bladder and bowel control function can be found in brindley u . s . pat . no . 3 , 870 , 051 , which is incorporated herein by reference . commercial examples of such function - specific components can also be found in the vocare ™ system , sold by neurocontrol corporation ( cleveland , ohio ). as fig3 a , 3 b , 3 c , and 4 show , the universal external controller 26 is desirably housed in a compact , lightweight , hand held housing 28 . in one implementation , the housing 28 measures about 9 . 5 cm by 5 . 6 cm × 2 . 7 cm , and weighs , e . g ., about 160 g . as such , the controller 26 readily fits into a pocket or can be clipped onto the belt of an individual . desirably , the controller 26 is battery powered . in the illustrated embodiment , the controller 26 includes a power input slot that receives an interchangeable , rechargeable , industry - standard battery 30 ( see fig4 ), e . g ., a lithium ion battery used in association with a motorola ™ star tech ™ cellular phone . the controller 26 desirably interchageably accommodates rechargeable batteries of various capacities , so that different power usage levels of the controller ( depending upon the number and type of prosthetic functions of the controller 26 ) can be readily supported . desirably , the battery 30 cannot be charged when connected to the universal external controller 26 , so that the controller 26 ( and , thus , the user ) cannot be connected to main power . instead , the battery 30 must be removed and coupled to an associated external battery charger ( not shown ). the controller 26 also desirably includes a display screen 32 and keypad 34 , which together form an interactive interface between the individual user and the controller 26 . the display 32 can comprise , e . g ., a liquid crystal display . the display 32 presents to the individual pertinent operational and status information , and also prompts the individual to select or modify operational settings using the keypad 34 . the keypad 34 can comprise , e . g ., a one - piece silicone - rubber molded unit . the controller 26 desirably houses a microprocessor 36 , which , in the illustrated embodiment ( see fig4 ), is implemented on a main , double - sided circuit board 38 . the main circuit board 38 carries the components of the microprocessor 36 , e . g ., high and low voltage supplies , a high voltage protector , input / output ports 112 ( shown in fig3 b ) and drivers for the external control signal sources and pulse transmitters , a microcontroller , keypad interface , the liquid crystal display 32 , and an audio device ( e . g ., a buzzer ). the microprocessor 36 also desirably includes a 900 mhz transceiver , to allow wireless linking between the controller 26 and a compatible external wireless control signal source 12 ( 1 )( 2 )( 3 ), as will be described in greater detail later . if desired , additional full size or half - size circuit boards 40 ( see fig4 ) can be optionally provided , to handle special input signal conditioning for one or more of the function - specific control signal sources ( e . g ., the joy stick - type shoulder position sensor ). the microprocessor 36 can be realized with , e . g ., a conventional mc68hc12 microcontroller . the microprocessor 36 also desirably includes a flash memory device on the main circuit board 38 , which can be realized with e . g ., a conventional eeprom memory chip . the flash memory device carries embedded , programmable code , which will also be call the “ firmware .” the firmware expresses the pre - programmed rules or algorithms under which the stimulation timing and command signals are generated in response to input from the various external control sources , as well as the pre - programmed rules or algorithms that govern operation of the display 32 and keypad 34 of the controller 26 to create the user interface , as well as the other input / output devices supported by the controller 26 . the microprocessor 36 of the controller also desirably includes an infrared transceiver . the transceiver allows the wireless transfer of information to and from the microprocessor through an optical lens 42 ( see fig3 c and 4 ). this makes possible wireless programming of the firmware by infrared link by an external computer , as will be described later . this also makes possible wireless linking between two or more controllers 26 , for exchange of information and for replacement and backup purposes . as will be described later , the microprocessor 36 also accepts programming input via the input keypad 34 , allowing the individual user or care giver to program operation of the controller 26 to the extent permitted by the firmware . in the illustrated embodiment , the housing 28 encloses the display 32 , keypad 34 , and circuit board ( s ) 38 and 40 between front ( keypad side ) and rear ( battery side ) housing shells 44 and 46 , which can be made , e . g ., from molded abs impact - resistant plastic . spash - proof gaskets 48 are desirably placed at appropriate places , e . g ., about the keypad , battery contacts , and housing shells , to seal the housing 28 against ingress of moisture . a lcd lens window 50 desirably covers the display 32 . pivots 52 for a conventional flip cover can also be provided on the housing 28 . fig5 shows a representative circuit block diagram for the microprocessor 36 of the universal external controller 26 . the specific circuitry shown in fig5 allows the selection of a desired neuromuscular stimulation objective and supports the generation of output signals to one neuromuscular stimulation assembly to achieve the objective . however , it should be appreciated that the circuitry can be modified to include multiple parallel output stages , so that concurrent outputs to different neuromuscular stimulation assemblies can be provided . as shown in fig5 the circuitry is built on two printed circuit boards : the main circuit board 38 and the auxiliary board 40 . fig5 a to 5 m show representative circuit schematics for the components carried on the two boards 38 and 40 . the main circuit board 38 consists of five circuit modules . these are ( see fig5 ) the power supply module 200 , the implant driver module 202 , the microcontroller module 204 , and the user interface module 206 . the representative implementation mounts these modules on a double - sided , 6 - layer fr4 printed wiring main circuit board 38 ( 88 mm × 49 mm ). in the illustrated embodiment , the functions supported by the main circuit board 38 include : ( i ) mounting of push buttons of the keypad 34 for user control ; ( ii ) mounting of the display 32 and audio device for user prompting and information display ; ( iii ) mounting of contacts for user serviceable battery 30 ; ( iv ) mounting of output plug contacts for the indicated function - specific pulse transmitters ; ( v ) an interface to auxiliary control boards 40 , e . g ., for specialized function - specific control signal sources 12 ( 1 ) ( 2 ) ( 3 ); ( vi ) control of processing functions via the microprocessor 36 and memory chip ; ( vii ) interface to the keypad 34 , display 32 , audio device , and other user interfaces to the microprocessor 36 ; ( viii ) drivers for the indicated function - specific pulse transmitters 16 ( 1 )( 2 )( 3 ); ( ix ) interface to the battery 30 , including detection of battery charge status ; ( x ) provision of an infrared communications link ; and ( xi ) provision of a 900 mhz communications link . various circuit components and configurations can be placed on the main board to realize these and other functions . a representative implementation will be generally described with reference to fig5 a to 5 m and associated tables . the representative implementation meets medical grade ipc standard design rules , using no wires and all standard components , except one custom made transformer . the representative implementation uses no adjustable components , except one trim capacitor ( to accommodate variations in the one custom made transformer ). the representative implementation is emc compatible . the power supply module 200 includes a low - voltage supply circuit 208 ( shown schematically in fig5 a ) and a high - voltage supply circuit 210 ( shown schematically in fig5 b ). the low - voltage supply circuit 208 converts the battery voltage of 2 . 7 to 4 . 2 v to the general circuit operation voltage of 5 . 0 v . the high - voltage supply circuit 212 converts the same battery voltage to the variable operating voltage for the implant drivers ( 5 . 0 to 8 . 5 v for the finger - grasp and standing functions , and 10 to 40 v for the bladder / bowel control function ). each voltage supply circuit 208 and 210 is a dc / dc converter built around a specific ic chip . the level of the high voltage is set by the microcontroller module 204 via a dac . a high - side current sensing ic provides output current value to the microcontroller module 204 . the implant driver module 202 includes the function - specific driver 212 for the bladder and bowel control function ( fig5 d ), the function - specific driver 214 for the hand - grasp function ( fig5 e ), and the function - specific driver 216 for the standing function ( fig5 f ), with an associated high voltage protector ( fig5 c ), to provide failsafe hardware protection . the hand - grasp and standing function drivers 214 and 216 generate amplitude - modulated carrier of 6 . 78 mhz for powering and communicating with the implanted function - specific receivers / stimulators , respectively 18 ( 1 ) and 18 ( 2 ). as will be described in greater detail later , the output rf for each of these drivers 214 and 216 can be set by the user at one of five levels between 0 . 5 to 1 . 0 w . this variable rf power setting ensures reliable coupling to the associated implanted function - specific receiver / stimulator 18 ( 1 ) or 18 ( 2 ) at the specific depth of implantation ( which can vary ), while minimizing battery consumption . the bladder and bowel control driver 212 generates high voltage ( 10 to 40 v ), high current ( up to 1 a ) pulses to excite the associated receiver / stimulator 18 ( 3 ). three identical output stages can be controlled by the microcontroller module 204 for interfacing with either a 3 - channel or a 2 - channel receiver / stimulator 18 ( 3 ). the function of the high - voltage protector 218 is to prevent accidental application of high voltage to the finger - grasp or standing drivers 214 to 216 in case of a firmware failure . the microcontroller module 204 ( schematically shown in fig5 g ) is built around a motorola hc12 chip . the hc12 chip has 1 - kbyte ram and 32 - kbyte flash eerom . the built - in flash memory is used for the system firmware . an external 8 - kbyte eeprom chip is used for user - specific data , such as for finger - grasp patterns ( as will be described later ). a 4 - mhz ceramic resonator is selected for obtaining a 2 - mhz clock frequency in the hc12 . the hc12 uses a synchronous serial peripheral interface ( spi ) to communicate with three peripheral chips : the lcd display driver ; the dac for high - voltage setting ; and the adc in the auxiliary board 40 ( as will be described later . the hc12 also uses an asynchronous serial communication interface ( sci ) to communicate with the infrared transceiver 220 ( shown schematically in fig5 k ) and the 900 - mhz transceiver 222 ( shown schematically in fig5 l ). the internal 8 - channel , 10 - bit adc of the hc12 is used to monitor the critical parameters such as battery voltage , output voltage to the low - voltage supply 208 , output voltage and output current of the high - voltage supply 210 , and the received signal strength of the 900 - mhz transceiver 222 . the user interface module 206 consists of the circuitry 224 for the keypad 34 ( shown schematically in fig5 h ), the circuitry 226 for the liquid crystal display ( lcd ) 32 ( shown schematically in fig5 i ), and the circuitry 222 for the 900 - mhz transceiver ( shown in fig5 l ). in the keypad circuit 224 , a pair of perpendicularly situated reed switches is connected in parallel to each of the regular pushbutton switches for the “ enter ” and “ exit ” functions , as will be described later . the reed switches allow the user to operate the device using a finger ring with a magnet , without having to physically touch the keypad 34 . the lcd circuit 226 has a 16 character × 4 roll screen 32 with led back lighting . the volume of the sound generated by the buzzer circuit 228 ( shown schematically in fig5 j ) is adjustable by changing the pulse width . the infrared transceiver 220 ( shown schematically in fig5 k ) is implemented with a transceiver ic and discreet transmitting led and receiving photo diode . the 900 mhz transceiver ( shown schematically in fig5 l ) is formed with a loop antenna , an amplitude - sequenced hybrid ( ash ) transceiver module , and a dedicated microcontroller chip for decoding the received commands . input and output level shifters are used for interfacing the 3 - v transceiver module 222 with the 5 - v hc12 microcontroller . in the representative implementation , the controller also includes a double - sided , 6 - layer fr 4 printed wiring board 40 ( 40 mm × 46 mm ) ( shown schematically in fig5 m ), which serves as an input signal conditioning card for a joy - stick type shoulder position sensor , which is used in the illustrated embodiment to carry out the finger - grasp function . the main board 38 and auxiliary board 40 are connected together through a 30 - contact interboard connector 240 . the auxiliary board 40 includes an input filter 230 having low - pass filters and surge suppressors for improving immunity to electromagnetic interference . the auxiliary board 40 also includes a differential amplifier 232 , which has two instrumentation amplifier ic chips set a gain of 10 for both x and y axis signals coming from the shoulder position sensor . the auxiliary board 40 also includes a an analog - to - digital converter 234 , which is a 2 - channel , 12 - bit serial adc chip . a power supply 236 on the board 40 uses a charge - pump ic to convert battery voltage to the 5 v excitation level for the shoulder position sensor . the 5 v output is pulsed at a duty cycle of { fraction ( 1 / 16 )} to conserve battery power . the board 40 also includes switch interface relays 238 , which relays the two external switches to the microcontroller module 204 , while also providing the signal about the connection of the sensor or the switches . the following tables describe for ready reference further details of the components and their functions as shown in fig5 and 5a to 5 m . the pre - programmed rules for the controller 26 ( comprising the firmware ) are contained in the eeprom memory chip . the rules govern , e . g ., the operation of the user interface , the generation of the stimulation timing and command signals by the supported function - specific utilities , the interface with the various function - specific control signal devices ( including wireless links ), the special modulation of pulse outputs , and communication with external programming sources . the control algorithms expressing the rules can be realized as a “ c ” language program implemented using the ms windows ™ application . the firmware , once embedded , can be reprogrammed or updated in various ways , including linkage ( by cable or wireless infrared ) of the controller 26 to an external computer with the appropriate software , or by the user using the keypad 34 on the controller 26 itself . further details of these representative implementations of these functional blocks of the controller firmware will now be described . in the illustrated implementation ( see fig3 a ), the front shell 44 of the controller 26 presents the display 32 on which the various screens generated by the user interface are displayed . the user interface also displays on the screen 32 various graphic icons , e . g ., a battery life icon 54 , a stimulation energy application icon 76 , and others ( not shown ), such an alarm or warning icon and a external computer connection icon . associated audible signals can also be used to provide information regarding the status of these indications , e . g ., low or discharged battery , errors , etc . the front shell 44 of the controller 26 also presents the keypad 34 , through which the user communicates with the interface . in the illustrated implementation ( see fig3 a ), six push buttons 56 to 66 are present . the push button 56 is used to turn the controller on . the button 56 also serves an enter key to progress from screen to screen of the interface . the push button 58 is used as to exit out of certain programming screens , as well as a control signal source in certain functions . the push buttons 60 and 62 are used to scroll up and scroll down the screens , to move through the menus generated by the user interface . the push bottons 64 and 66 are used to increment or decrement selections during certain functions . an audible signal or beep can be selectively generated upon pushing the buttons 56 to 66 . upon power up , the firmware displays an appropriate welcome screen ( not shown ) and executes a main loop , which continues to runs in the background at prescribed time intervals ( e . g ., every 16 msec ). the main loop self - tests the microprocessor 36 for defective hardware or corruption of the flash memory contents . errors noted by the main loop interrupt operation of the controller 26 and cause the user interface to display appropriate error icon and audible signal . absent an error during start up , the user interface function displays a task selection menu 68 ( see fig3 a ) on the display screen 32 . the task selection menu 68 lists the specific therapeutic or prosthetic functions supported by the controller 26 . in the illustrated implementation , the listed functions are ( i ) the finger - grasp function ; ( ii ) the standing function ; and ( iii ) the bladder and bowel control function , as already described . the user selects a function by scrolling ( operating the scroll buttons 60 and 62 ) and pushing the enter button 56 . upon selection , the firmware executes the function - specific processing utility dedicated to the selected function . by way of example , the details of the processing utility dedicated the finger - grasp function will be described . similar interface and control features can be executed to carry out the other functions . in the illustrated implementation ( see fig6 ), the opening screen 70 for the finger - grasp function list four operational choices : exercise ; function ; patterns ; and set up . by selecting exercise ( using the scroll bottons 60 and 62 and the enter button 56 ), the screen displays an exercise regime screen 72 ( see fig7 ), which also shows a time delay before an exercise regime is automatically initiated by the firmware . different exercise regimes ( designated exercise 1 , exercise 2 , exercise 3 , etc .) can be selected by the user by pressing the enter button 56 once within a predetermined short time interval ( e . g ., 3 seconds ) after a given exercise regime screen 72 is displayed . typically , the timing parameters and exercise grasp patterns for each exercise regime have been preprogrammed into the firmware by a clinician , as will be described later . with the desired exercise regime selected , the user presses the enter button 56 or waits for the time delay to expire . the display 32 shows an exercise underway screen 74 to indicates that stimulation is being applied to carry out the selected exercise regime . the exercise underway screen 74 displays a stimulation on icon 76 , as well as the time remaining for the exercise session . as soon as the selected exercise regime is completed , the display 32 shows an exercise completed screen 78 . after a prescribed time period of no further input ( e . g ., two minutes ), the firmware turns the controller 26 off to conserve battery life . this automatic time - out feature is executed throughout the interface . when patterns is selected on the opening screen 70 ( by use of the scroll buttons 60 and 62 and enter button 56 ) ( see fig8 ), the display 32 shows a grasp pattern selection menu 80 by which lateral and palmar grasp patterns can be selected . the menu 80 lists “ lateral ” and “ palmar ” followed by numbers . the user scrolls using the buttons 60 and 62 to select either pattern . the user then increments or decrements using the buttons 64 and 66 to select the specific pattern by number . for example , there can be several lateral patterns ( designated lateral 1 , lateral 2 , lateral 3 , and lateral off ) and several palmar patterns ( designated palmar 1 , palmar 2 , palmar 3 , and palmar off ), which typically have been pre - programmed into the firmware by a clinician , as will be described later . when done choosing , the user selects the enter button 56 , which returns to the opening screen 70 for the finger - grasp function . when a shoulder position sensor is coupled to the universal external controller 26 ( designated as sw 1 in fig9 ), selection of function on the opening screen 70 allows the user to control the finger - grasp function using the external shoulder position sensor . typically , the clinician will have previously preprogrammed the controller 26 so that either back and forth shoulder movements or up and down shoulder movements sensed by the shoulder position sensor will generate the appropriate proportional commands to open and close the grasp . the clinician may also have preprogrammed the controller so that quick movements of the shoulder position sensor will lock the grasp . alternatively , the clinician may have preprogrammed the controller to lock the grasp in response to input from a remote lock switch ( designated as sw 2 in fig9 ) coupled to universal external controller 26 . the remote lock switch toggles the existing grasp pattern between a locked and unlocked position , and can be used by individuals who have difficulty with or do not want to use the shoulder jerk motion . with the function selected , the user turns the shoulder position sensor on . the firmware responds to shoulder movement input in either elevation / depression or protraction / retraction to grade hand position and strength from opened to closed . thus , for example , by retracting the shoulder , the hand opens , and by protracting the shoulder , the hand closes . in response to shoulder movement , the firmware turns the stimulation on to undertake the last selected lateral grasp pattern . the firmware executes a proportional control algorithm that , in response to the prescribed shoulder movement ( e . g ., protracting the shoulder ), applies stimulation to progressively close the user &# 39 ; s hand in the desired grasp pattern . changing the prescribed shoulder movement ( e . g ., retracting the shoulder ) changes the execution of the proportional control algorithm to apply stimulation to progressively open the hand . the hand can be thereby progressively opened or closed in this manner . pressing a switch on the shoulder sensor will toggle between lateral and palmar grasp patterns as shown in fig9 a grasp - function status screen 82 is displayed as the control algorithm is being executed . a graphical depiction on the grasp - function status screen 82 ( which , in the illustrated embodiment , comprises a directional arrow and a bar chart ) proportionally tracks the grasp position of the hand from open to closed , and vice versa . the grasp - function status screen 82 also displays the current grasp pattern . the stimulation on icon 76 is also displayed . if so programmed , a small quick shoulder motion will lock the grasp in the then - existing position , and the grasp - function status screen will accordingly change to indicate the grasp is “ locked .” with the grasp locked , the user is able to move the shoulder without altering the then - existing grasp pattern . when the user wants to regain control of the hand , a subsequently small quick shoulder motion will unlock the grasp , and the grasp function resumes according to the prescribed shoulder movement from the then - existing position . the grasp - function status screen 82 changes to indicate that the grasp is “ unlocked ” and the proportional direction display resumes . alternatively , if so programmed , depressing a remote lock switch will cause the grasp to lock and unlock . desirably , according to preprogrammed rules in the firmware , when the unlock command has been given , the grasp command enters a realignment state , during which the existing position of the grasp will not change until the user moves the shoulder back to the position where the lock command occurred . this keeps the user &# 39 ; s hand from step - jumping opened or closed until the user is prepared to control it . alternatively , the realignment state can be automatically implemented , during which , upon receiving an unlock command , the firmware aligns the grasp command range with the user &# 39 ; s current shoulder position . the position of the command range can be automatically adjusted during proportional control , too . these options are selectable during programing of the firmware . appropriate audio signals can be also generated by the controller to mark changes in the stimulated grasp pattern from open to close , locked and unlocked , lateral and palmar . holding the enter button 56 for a predetermined time ( e . g . 2 seconds ) turns the controller 26 and the ongoing stimulation off . holding the switch on the shoulder position sensor for a prescribed period will also turn the ongoing stimulation off . if a shoulder position sensor is not coupled to the universal external controller 26 , the user can subsequently control a selected grasp pattern by using the keypad 34 on the controller 26 itself . in a representative implementation , with the opening screen 70 for the finger - grasp function displayed , depressing the enter button 56 for a prescribed time period ( e . g ., 2 seconds ) turns the stimulation on to undertake the last selected lateral grasp pattern . as fig1 shows , the grasp - function status screen 82 is displayed , as previously described . the firmware executes a gated ramp control algorithm that , in response to pressing or holding the control button 58 , applies stimulation to progressively close the user &# 39 ; s hand in the desired grasp pattern . pressing the enter button 56 changes the execution of the gated ramp algorithm to apply stimulation to progressively open the hand . the hand can be progressively opened or closed in this manner . the graphical depiction on the grasp - function display screen 82 ( i . e ., in the illustrated embodiment , the directional arrow and a bar chart ) proportionally tracks the grasp position of the hand from open to closed , and vice versa . pressing the enter button 56 twice while executing a grasp function toggles between a selected lateral or palmar grasp pattern . the grasp - function display screen likewise displays the current grasp pattern and the stimulation on icon 76 . by releasing the enter button 56 as the hand is opening or closing , the gated ramp algorithm locks the hand at the then - existing grasp position , and the grasp - function status screen 82 accordingly indicates that the grasp is “ locked .” when the user wants to regain control of the hand , a subsequently pressing the enter button 56 resumes the grasp function in the last selected direction from the last - existing position . upon receiving a lock command , the gated ramp control algorithm maintains the grasp as the last - existing command level until it receives a further command from the keypad 34 to unlock the grasp pattern or to turn the controller 26 off . holding the enter button 56 for a predetermined time ( e . g . 2 seconds ) turns the controller 26 and the stimulation off . the firmware can permit an individual user to program designated functions of the controller using the keypad 34 . the extent to which the firmware allows this will vary according to degree of freedom the manufacturer or clinician wants to provide an individual user . selection of setup in opening screen 70 ( using the scroll buttons 60 and 62 and control button 58 ) permits this function . in one representative implementation , the firmware allows the user to customize the controller 26 by ( i ) selecting the grasp lock control input source ; ( ii ) disabling sound that accompanies use of the keypad 34 or shoulder position sensor ; ( iii ) or changing the volume of audible feedback . selection of setup displays a selection menu screen 84 ( see fig1 ), where the permitted reprogramming selections are listed . by scrolling to the appropriate selection ( using buttons 60 and 62 ), incrementing or decrementing the associated status selections ( using buttons 64 and 66 ), and by selecting ( by pressing the enter button 56 ), the various reprogramming selections can be accomplished . for example , the user can choose to lock the grasp using an external switch or by shoulder motion itself ; or turn the keypad sound on or off ; or turn the audible feedback for shoulder sensor movement on or off ; or adjust audible feedback volume from medium or high . the universal external controller 26 can accommodate input from a variety of external control sources , such as myoelectric surface electrodes , remote control switching devices , reed switches , and push buttons on the user interface panel of the universal external controller 26 itself . external control sources can be coupled to the universal external controller 26 by direct ( i . e ., cable ) connection , or by wireless link ( e . g ., 900 mhz ). when the universal external controller 26 is not otherwise engaged in the execution of a functional task , the controller 26 can be linked to a remote computer 86 for programming by a clinician ( see fig1 ). the link can comprise a hardware interface , e . g ., an interface module and serial cable to route and translate data between the remote computer 26 and universal external controller 26 . alternatively , the firmware of the universal external controller 26 allows communication through an infrared link , thereby eliminating the need for an interface module , serial cable and any direct hardware connection . the infrared link simplifies communication and eliminates electrical safety concerns associated with direct electrical connection . the firmware establishes communication with the remote computer 86 , to identify and qualify incoming information received from the remote computer 86 . the interface desirably includes a clinician set up screen 88 ( see fig1 ), which is displayed upon pushing the control button 58 when in the opening menu 70 for a given selected function . the clinician set up screen 88 shows a computer link prompt , which can be selected by use of the buttons 64 and 66 and control button 58 to show a computer link status screen 90 . the computer link status screen 90 indicates “ waiting ” and then “ talking ” as the link between the universal external controller 26 and the remote computer 86 is established . in the illustrated implementation ( see fig1 ), the remote computer 86 desirably executes a programming system 92 , which can be used to control , monitor and program the universal external controller 26 in the selected function . the programming system 92 allows a clinician to customize the firmware residing in an individual universal external controller 26 according the specific needs of the user and the treatment goals of the clinician . the primary purpose of the programming system 92 is to adjust parameters and store the parameters affecting the selected function in the universal external controller 26 , which is used by the patient during daily operation . the system 92 also desirably provides an interface to display visual feedback to the clinician and user about the operation of the control algorithms and equipment associated with the controller 26 . in a representative implementation , when the finger - grasp function is selected , and the universal external controller 26 and remote computer 86 are linked , the programming system 92 can be run to assess the muscle recruitment patterns , set grasp stimulation patterns , adjust controller parameters , set exercise timing , and retrieve usage data resident in the firmware affecting the finger - grasp function . the programming system 92 enables inputs from the universal controller 26 to be monitored and stimulus outputs to be controlled in real time . the programming system 92 also allows operational parameters to be saved to an electronic patient file and downloaded to the universal external controller 26 . the universal external controller 26 can then be disconnected from the programming system , allowing portable operation , as already described . desirably , the programming system 92 can be installed on a personal computer ( e . g ., a 233 mhz pentium ii laptop with 800 × 600 resolution monitor ) running microsoft windows ™ 98 or higher . the programming system 92 desirably includes a clinician programming interface , which allows allows the clinician to observe , modify , and program the stimulus patterns , the shoulder position control characteristics , and the exercise sequences in an expeditious and user - friendly way . in a representative implementation , the clinician programming interface can be written in the visual basic 6 programming language for execution in the windows environment . in the illustrated implementation ( see fig1 ), the system is composed of a generic module 94 including generic patient information and as well as one or more specific modules 96 for each of the function - specific tasks supported by the controller 26 ( e . g ., the finger - grasp function , the standing function , and the bladder and bowel control function ). the generic patient information module 94 stores all general information about the patient using the particular universal external controller 26 . the information in this module 94 does not necessarily relate to any particular function - specific device , but includes , e . g ., fields for entering personal information that the patient may prefer to keep confidential . the number and nature of the specific modules 96 will vary according to the number and nature of the function - specific tasks that the controller 26 supports . by way of example ( see fig1 ), for the finger - grasp function , there can be a system device information module 98 , an electrode profiling module 100 , a lateral and palmar grasp patterns programming module 102 , a shoulder position sensor programming module 104 , and an exercise programming module 106 . appropriate counterpart modules can also provided for the other treatment functions supported by the controller 26 . for the finger - grasp function , the device information module 98 captures , stores , displays , and allows modification of information that relates to the components arranged to accomplish the finger - grasp function system , including surgical implantation procedures , device serial numbers , electrode mapping , and progress notes . for the finger - grasp function , the remaining modules 100 to 106 allow optimization and programming of functional features of the components . the electrode profiling module 100 aids the clinician in determining the stimulation thresholds and operational range of parameters for each electrode implanted on a muscle . this information determines system performance and configures electrodes for grasp programming . for example , for each electrode , the maximum force that can be obtained from the electrode during use can be determined , as can specific points of interest ( poi ) of the recruitment characteristics of each muscle . for each electrode / muscle , the threshold for recruitment and the maximum desired force is determined for each grasp pattern . additional poi &# 39 ; s can be denoted such as spillover to other muscles and other comments . the grasp programming module 102 provides a mechanism for the clinician to program , view , and modify grasp patterns . the grasp pattern coordinates the activity of the muscles implanted with electrodes to produce different functional grasp , e . g . lateral and palmar grasps . the main functions of the module 102 are to program , view , and modify the activation level of each electrode as a function of percent command . this module 102 provides templates and example grasps that the therapist can modify for the individual patient . the therapist can then test the pattern , compare to previous patterns , and modify the pattern before transferring them to the universal external controller 26 . the shoulder position sensor programming module 104 provides a mechanism for the therapist to program , view , and modify the shoulder position proportional control and lock parameters . the module 104 allows the therapist to determine the patient &# 39 ; s range of shoulder motion , select control and locking directions , select stationary or mobile command , display visual feedback to aid the patient in understanding the operation of the shoulder controller , set the parameters for locking the grasp , test the shoulder position sensor settings , both with and without an active grasp , and compare the new settings with previous settings . the exercise programming module 106 enables the therapist to program , view , and modifying patient exercise routines . the main functions of this module 106 include setting exercise duration , setting the delay in starting the exercise , selecting the exercise patterns , and selecting specific exercise timing parameter . it also allows the therapist and user test the exercise patterns prior to programming . in the illustrated implementation , the clinician set up screen 88 ( see fig1 ) also includes a coupling power prompt . when selected ( using the buttons 60 and 62 and the control button 58 ), a coupling power select screen 108 is displayed . the screen 108 allows the clinician ( using the increment / decrement keys 64 and 66 and control button 58 ) to select an appropriate couple power setting , from 1 ( lowest ) to 5 ( highest ). the clinician can thereby adjust the power output of the pulse transmitter 16 for the selected function . the controller 26 is thereby able to adjust to different different depths of implantation for the receiver / stimulator for a given function , which , in turn , dictate different radio frequency power levels to transcutaneously link the receiver / stimulator for that function to the associated pulse transmitter for that function . the clinician is thereby able to customize the controller 26 to optimize reliable coupling while maximizing battery life . in the illustrated implementation ( see fig1 ), the clinician set up screen 88 also includes a device status prompt . when selected ( using the buttons 60 and 62 and control button 58 ), a device status screen 110 is displayed . information on the device status screen 110 allows the clinician to assess the operating state of the controller 26 for monitoring and trouble shooting purposes . in addition to the allowing optimization of coupling power ( as just described ), the firmware also incorporates preprogrammed rules that promote other power conserving techniques aimed at prolonging battery life . in the illustrated embodiment , the power conserving techniques includes pulsed signal output ( to the receiver / stimulator ) and pulsed signal input ( from the control signal source ). as previously described , under the control of the pre - programmed rules in the firmware of the microprocessor 36 , the universal external controller 26 governs the hand - grasp function by generating prescribed stimulus timing , command , and power signals based upon input received from the shoulder position sensing control signal source . the prescribed stimulus timing , command , and power signals are formatted for transmission by the function - specific pulse transmitter in the form of modulated radio frequency carrier wave pulses . by pulsing the output command signal for the hand - grasp function , the universal controller conserves power , to thereby conserve battery life . as shown in fig1 a , the output command signals are transmitted during successive frame intervals 114 . each successive frame interval includes 114 an on period 116 , during which radio frequency energy is generated to transmit the command signals to the function - specific pulse transmitter , and an off period 118 , during which no radio frequency energy ( and thus no command signals ) are being transmitted . the duration of the frame interval 114 can vary . in a representative embodiment , the on periods 116 and off periods 118 begin on 1 msec boundaries , so that the frame interval 114 is an integer multiple of 1 msec . the frame rate is set to equal the stimulus frequency , which equals 1 / frame interval . in a representative embodiment , the stimulus frequency is 6 . 78 mhz ± 5 khz . within each on period 116 of a given frame interval 114 ( see fig1 b ), there is a power up phase 120 , followed by an output stimulus phase 122 , followed by a recharge phase 124 ( to allow for radio frequency magnetic field decay ). the command signals 126 are transmitted only during the output stimulus phase 122 . the command signals 126 are transmitted in channel groups 128 , with a channel 128 group dedicated to a given implanted electrode where stimulation is to be applied . each channel group 128 includes a set amplitude command 130 and an set duration command 132 . the length of the output stimulus phase 122 will , of course , depend upon the number of channels receiving stimulation and the nature of the stimulation . when a channel has no command output ( i . e ., there are no set amplitude or duration commands for that channel ), the next higher stimulation channel assumes its time slot . in the illustrated embodiment , all commands begin on 1 msec boundaries ( as previously stated ). representative time periods for the phases are , for the power up phase 120 : 16 msec in duration if the off period 118 is more than 52 msec in duration , otherwise , 6 msec ; for the output stimulus phase 122 : 2 times n msec in duration , where n is the number of channels being stimulated ; and for the recharge phase 124 , 10 msec in duration . as frame rates increase , the off period 118 will become shorter until there is no off period 118 . within each channel group 128 , the set amplitude command 130 and the set duration command 132 are arranged within a pulse window 134 ( see fig1 c and 14 d ). the initial period of the pulse window includes a coding window 136 . the preprogrammed rules of the firmware generate successive radio frequency pulses during which radio frequency energy is applied ( rf on ) and during which radio frequency energy is not applied ( rf off ). in a representative embodiment , the total interval for a given rf on and rf off sequence is 10 μsec (± 1 μsec ), and the rf on interval within this period is 4 μsec (± 1 μsec ). gaps 140 are formed between the rf on and rf off periods , which in the representative embodiment last 6 μsec (± 1 μsec ). the pre - programmed rules of the firmware establish the set amplitude command and the set duration command depending upon the number and sequence of gaps 140 in the pulse window 134 . the coded correlation prescribed between the number and sequence of gaps 140 and the related commands can , of course , vary . in a representative implementation ( see fig1 c ), a succession of two to nine gaps 140 in the initial coding window 136 prescribe the channel for which a set duration command 132 is to be effective . two to nine gaps 140 identify channels 1 to 8 , respectively ( i . e ., two gaps means channel 1 , three gaps means channel 2 , and so on ). in fig1 c , seven gaps identify a set duration command for channel 6 . as further shown in fig1 c , the succession of channel gaps 140 in the coding window 136 is followed by a gap 142 having a length ( i . e ., duration ) which sets the actual duration of the stimulation pulse that is to be applied to the prescribed channel . the length of the gap 142 outside the coding window 136 can vary , e . g ., between 1 μsec to 200 μsec . in fig1 c , the gap 142 outside the coding window 136 is shown to be 65 μsec , which specifies a stimulus duration of 65 μsec . in the representative implementation ( see fig1 d ), a succession of eleven gaps 140 in a successive coding window 136 prescribes the amplitude of the pulse that is to be applied to the earlier prescribed channel . as fig1 d shows , following the eleven gaps 140 in the coding window 136 is another succession of gaps 144 outside the coding window 136 , the number of which set the pulse amplitude . for example , in the representative implementation , eleven gaps 140 in the coding window 136 followed by one gap 144 sets an amplitude of 14 ma ; eleven gaps 140 in the coding window 136 followed by two gaps 144 sets an amplitude of 8 ma ; eleven gaps 140 in the coding window 136 followed by three gaps 144 sets an amplitude of 2 ma , and eleven gaps 140 in the coding window 136 followed by four gaps 144 sets an amplitude of 20 ma . in fig1 d , a pulse amplitude of 2 ma is set . in a representative embodiment , each pulse window 134 is assigned a duration of at least 410 μsec . within the pulse window 134 , the initial coding window 136 is assigned a duration of 150 μsec (± 5 μsec ). the input from the shoulder position sensor can also be pulsed , to conserve power consumption . in the illustrated embodiment , as already explained , the power supply 236 on the auxiliary board 40 converts battery voltage to the 5 v excitation level for the shoulder position sensor . the 5 v output to the shoulder sensor is pulsed at a duty cycle of , e . g ., { fraction ( 1 / 16 )}. thus , the input from the shoulder position sensor to the controller 26 is received in pulses . the firmware of the universal external controller 26 can be programmed for use in association with other components to perform other neuromuscular stimulation functions . for example , the universal external controller 26 can be used to provide therapeutic exercise and pain relief for stroke rehabilitation and surgical speciality applications , including shoulder subluxation , gait training , dysphagia , tenolysis , orthopedic shoulder , and arthroplasty . details of the treatment of shoulder subluxation by neuromuscular stimulation are set forth in copending u . s . patent application ser . no . 09 / 089 , 994 , filed jun . 3 , 1998 and entitled “ percutaneous intramuscular stimulation system ” and copending u . s . patent application ser . no . 09 / 755 , 871 , filed jan . 6 , 2001 and entitled “ treatment of shoulder dysfunction using a percutaneous intramuscular stimulation system ,” both of which are incorporated herein by reference . the universal external controller 26 as described herein incorporates several fundamental features that address convenience , flexibility , and ease of use . ( i ) the controller 26 can be worn on the users body by virtue of it having a low weight and size . ( ii ) the user can be enabled to modify parameters , such as how to control the system , the type and degree of exercise they undertake , and the type and degree of stimulus parameters they use for their stimulation function . ( iii ) the utilization of cell phone battery technology makes the service , maintenance , and usage of the system more “ consumer - like ” and therefore easier to understand and use . ( iv ) the controller 26 isolates the user from ever having to connect the system directly to any source of power or communication link . the system uses the rechargeable battery as its sole power source and the infrared link as a communications port to a computer . ( v ) the controller 26 enables an extremely flexible control - input port that allows for , ( vi ) the controller 26 can support simultaneous control of two independent rf based implantable pulse generators ( e . g ., motor - control , and / or bladder / bowel control , and / or erection control function ). ( vii ) the controller 26 can communicate to any rf - based implantable pulse generators . thus , the controller 26 can be easily integrated into an existing rf - based stimulation system . ( viii ) the controller 26 can be programmed by a host computer , or be programmed directly by the user or a trained technician , without the need of an external host computer . the following examples are provided to exemplify the convenience , flexibility , and ease of use of a controller 26 that embodies features of the invention . different selectable neuromuscular functions it has already been explained how the controller 26 can enable individual selection of different functional neuromuscular stimulation functions , e . g ., the finger - grasp function , or the standing function , or the bladder and bowel control function . the controller 26 can also be configured to provide these and other different neuromuscular functions concurrently . for example , using the menu - driven interface of the controller 26 , as previously described , the user can select to implement a standing function concurrently with a bladder and bowel control function . in this arrangement , e . g ., a user could affect concurrent neuromuscular stimulation to enable micturation while in a standing position . in the arrangement , the controller 26 receives control signals through one input to affect the operation of the standing function ( e . g ., a remote push - button control coupled to the input , or a push button programmed for this purpose on the user interface panel of the universal external controller 26 itself ) while receiving other control signals through another input to affect operation of the bladder and bowel control function ( e . g ., another remote push - button control coupled to the other input , or another push button on the controller 26 programmed to accomplish this purpose ). concurrently , the controller 26 generates one stimulation output to the receiver / stimulator 18 ( 2 ) for the standing function , while generating another , different stimulation output to the receiver / stimulator 18 ( 3 ) for the bladder and bowel control function . in this arrangement , the controller 26 concurrently supports different control signal inputs and different stimulation outputs to different stimulation assemblies . the controller 26 can be further configured to concurrently provide an additional finger - grasp function , based upon control signal input received by the controller 26 from e . g ., a shoulder position sensor , and a stimulation output generated by the controller 26 to the receiver / stimulator 18 ( 1 ) for the finger - grasp function . these concurrent , multiple stimulation functions make possible normal user control over the bladder and bowel function , while standing . selection of the bladder and bowel control function concurrent with the selection of the finger - grasp function can also be accomplished , without selection of the standing function , to provide normal control over the bladder and bowel function while in a seated position . as another example , concurrent selection of the finger - grasp function and the standing function would enable the user to grasp objects while in a standing position . concurrent selection of these two functions would also allow the user to ambulate while carrying an object grasped in the user &# 39 ; s fingers . again , normal control over these functions is thereby provided . as previously explained , the universal external controller 26 can accommodate input from a variety of external control sources , such as myoelectric surface electrodes , remote control switching devices , reed switches , and push buttons on the user interface panel of the universal external controller 26 itself . external control sources can be coupled to the universal external controller 26 by direct ( i . e ., cable ) connection , or by wireless link ( e . g ., 900 mhz ). these different control signal sources can be selected for operation concurrently to achieve different , concurrent stimulation functions ( as the preceding example 1 demonstrates ). these different control sources can also achieve the same stimulation function based upon different source inputs . for example , the user can choose to affect the standing function , e . g ., by operation of a remote push - button control , or a reed switch , or a push button programmed for this purpose on the universal external controller 26 itself . in addition , the user can also provide a designated care partner with a remote control switch to affect the standing function independently of the user , either by wireless transmission of a control signal or by a cable connection . thus , for example , while the user holds of an ambulation assistance device , such as a walker , the care partner can remotely affect the standing function for the user , so that the user can be lifted to a standing position while the assistance device lends ancillary support and stability . conversely , the care partner can remotely affect the termination of the standing function , so that the user can return to a seated position while the assistance device lends ancillary support and stability . various features of the invention are set forth in the following claims .