fig1 shows an example embodiment of video gaming system comprising the personal computer 300 and other components mounted inside the metal case 306 . personal computer 300 contains a motherboard with intel i5 central processing unit ( cpu ), 8 gb memory , video graphics controller , peripheral device controllers , optical and hard disk drive ( s ) and power supply . the motherboard of personal computer 300 is modified with the attachment of the + 5v standby cable . this + 5 v standby cable is a two conductor 20 gauge wire 15 ″ in length with an insulated female socket connector at one end and the other end soldered , on the solder side , to the power signal named + 5vsb and ground on the motherboard of personal computer 300 . once soldered in place , the soldered wire connections are covered with a permanent insulating coating . personal computer 300 is running microsoft windows ® 10 operating system which in turn runs device driver software and various applications including games . although this embodiment includes a personal computer system using an intel processor with a video graphic controller , the video gaming system could be constructed using a different cpu , video graphics controllers including dedicated microcontrollers , mobile processors or system on chip ( soc ) devices . it could include cpu types with integrated graphic controllers or a separate graphics controller device . although this embodiment included the windows 10 operating system , those in the art are aware that any operating system capable of running software programs , including dedicated gaming operating systems could be substituted . the video gaming system also comprises the single board computer ( sbc ) 303 . in this embodiment , sbc 303 is the raspberry pi model a + with a hardware real time clock module connected to general purpose io ( gpio ) signal pins of sbc 303 . sbc 303 also contains a microsd card containing the linux debian “ raspian ” operating system and programs designed to start up automatically when the computer is plugged into the ac mains . the startup programs are written in bash scripts and the time limit control program is written in python . the flowchart for this program is provided in fig2 . various program libraries and applications in support of the time limit control software are also installed on the debian operating system . sbc 303 gets 5 volt power from the + 5 v standby cable attached to the motherboard of personal computer 300 . sbc 303 gpio pins connect to the power and reset switch inputs on the motherboard of personal computer 300 . this connection allows sbc 303 to turn on and off and reset personal computer 300 as needed to assist in providing hardware enforced time limit control . the power switch 305 and reset switch 304 are mounted to the front panel of case 306 and connect to gpio pins of sbc 303 . these switches are used for both power and reset control and to signal the time extension requests . the switch presses are detected by time limit control software routines that monitor and de - bounce the gpio signals connected to these switches . another gpio pin is connected to the power led indicator output of the motherboard of personal computer 300 . this is used to sense whether personal computer 300 is powered or off . sbc 3 has hdmi and usb output that connect through cables to the switching circuit board 37 containing the video signal switch 301 , the usb signal switch 302 and the associated connectors for internal and external cables . video signal switch 301 includes the texas instruments ( ti ) ts3dv20812 , a 2 - gbps differential switch 8 - bit , 1 : 2 multiplexer / demultiplexer with 3 - side band signals . it is an integrated circuit ( ic ) with high - speed switching circuits designed for switching hdmi or dvi signals . sbc 303 controls whether the output of video signal switch 301 is selecting the dvi output of personal computer 300 or the hdmi output of sbc 303 . control of video selection is provided through a gpio pin driving the selection input of video signal switch 301 . an hdmi cable connects between the hdmi output of sbc 303 and switching circuit board 37 . an hdmi cable connects between the video output of personal computer 300 and switching board 37 . an hdmi cable connects between video display monitor 320 and switching circuit board 307 with hmdi connectors open through the outside of case 306 of the video gaming system . although this embodiment uses an external video display , one skilled in the art could easily see how an internal display could be used instead . this display could be led , oled and could also be outfitted with a touchscreen . in this example embodiment , usb signal switch 302 includes the texas instruments sn74cbt3257 , 4 - bit 1 - of - 2 fet multiplexer / demultiplexer . usb signal switch 302 selection and enable inputs are driven by gpio pins of sbc 303 . the video gaming system also includes the external usb keyboard 321 connected to the output of usb signal switch 302 . usb inputs to usb signal switch 302 are provided by a usb port of personal computer 300 and the usb port of sbc 303 . usb cables between personal computer 300 and switching circuit board 307 and another usb cable connects between sbc 303 and switching circuit board 307 . although this design uses an external keyboard , one skilled itn eh art could easily see how an internal keyboard could be used instead . this embodiment uses sbc 303 with dedicated hardware to enforce user authentication , time limit configuration and time limiting operations independent of the operating system running on personal computer 300 . when the video gaming system is plugged into ac mains , + 5 v standby power from personal computer 300 powers sbc 303 . with power applied to sbc 303 , the cpu on sbc 303 , in this embodiment , the broadcom bcm2835 system on a chip ( soc ), begins executing standard code within its silicon . this program initializes certain on chip hardware , memory and then starts the boot loader of linux os located on the microsd card plugged into sbc 303 . the boot process includes the initialization of systemd , a suite of system management daemons , libraries , and utilities . all the necessary device drivers are initialized by systemd . near the end of the systemd initialization process , initialization script 41 begins execution with systemd starting pcm . service (/ etc / systemd / system / pcm . service ). the following is the script for pcm . service : when systemd processes pcm . service , pcm . sh script (/ usr / bin / pcm / pcm . sh ) is executed . the following is the script pcm . sh : pcm . sh executes the run - python . sh script inside an x window with sudo ( superuser privileges ) and the - nocursor ( no mouse cursor ) parameters (/ usr / bin / pcm / pcm4 / run - python . sh ). the following script is run - python . sh : the run - python . sh script runs the python interpreter and calls for the start of the time limit control program called “ gamesnooze . py ” (/ usr / bin / pcm / pcm4 / gamesnooze . py ). refer to fig2 for the flow chart of the time limit control program ( gamesnooze . py ). the program initializes ( 400 ), setting up various functions including the gpio switch detect function ( 410 ). this function uses interrupts to cause the routine to be called whenever a switch is pressed . initialization function ( 400 ) loads the extension request dates and counts for each user from files stored on the microsd card of sbc 303 . the routine also clears the extension request flag . the program then proceeds to the login screen function ( 401 ) that immediately switches the video and usb outputs to connect external monitor 320 and keyboard 321 respectively to sbc 303 . the function further detects whether personal computer 300 is powered by reading the state of the gpio pin connected to the power led indicator output of the motherboard of personal computer 300 . if it detects personal computer 300 is powered on , the time limit control software pulses the power switch inputs to the motherboard of personal computer 300 using the gpio pin assigned for that purpose . the function then displays the login screen . from the login screen , a user selects their user number ( 1 - 8 ) and then enters their password . the entries are validated ( 402 ) and if found to not be valid , an error message is displayed and the program returns to login screen ( 401 ). if the user selected is 8 and the password for user 8 is correct , the program diverts to the setup configuration screen 403 . setup configuration screen 403 provides the user interface to allow configuration of the allowed usage times and profile settings for authorized users of the system and the time / date settings for the hardware real time clock on sbc 303 . keyboard 321 is used to navigate and make setting entries . the following settings are configured from this screen : 1 . allowed time ranges for each user for each day of the week . 2 . allowed daily time limits for each user for each day of the week . 3 . extension limit count — number of time extensions allowed each day ( 0 - 10 ) 4 . extension time — amount of time extension allowed each extension ( in minutes , 1 - 60 ) 5 . user names , passwords for each user ( including user 8 ). the time limit control software stores configuration settings in the time limit / usage database stored on files located on the microsd card with the debian os . in addition to storing these additional time limit values , a record containing the date of the most recent extensions granted for each user are also stored . pressing the “ home ” key at any time will automatically save all settings and the program will return to login screen ( 401 ). in this example embodiment , the time limit / usage database is held in machine - readable data storage using files on the microsd card of sbc 303 . one in the art could see how this database could be located in other forms such as external flash memory or storage internal to dedicated hardware . alternatively , with the addition of a wifi or network adapter connected to sbc 303 , time limit settings can be configured on a database located remotely and configured using a web based application . when a user number 1 - 7 is entered with the password , it is validated ( 402 ). if a valid password has been entered , the program checks to see if time is available for that user ( 404 ). if not , the program displays an error message indicating why no time is currently allowed . if time is allowed , the program powers on personal computer 300 by pulsing the power switch input of personal computer 300 and switches the video and usb outputs to personal computer 300 through gpio signal connected to video signal switch 301 and usb signal switch 302 ( 405 ). the routine also sets the amount of time remaining allowed the user into a remaining count down time variable . the program then waits in the function periodic updates ( 406 ). periodic updates 406 , using a periodic one second timer function , decrements the amount of time ( in seconds ) available each second . during periodic updates ( 406 ), once each second the power switch is checked to see if the user wants to power down or if the user has shut down the system using operating system software controls . if the power button has been pressed down for more than 1 second , the program will then set the remaining count down time to zero . the program then continues on to see if time remaining is less than 2 minutes ( 407 ). if so , the program then provides a low time visual warning ( 408 ) by briefly switching the video on and off . the program then checks to see if time has completely run out ( 409 ). if time has run out the program then returns to login screen ( 401 ) which will immediately switch the display and usb keyboard and power off the system . although brief video blanking is used to signal low time , one skilled in the art could see how other means such as audio tones , or video display overlays could be used . if time has not run out , the program checks to see if an extension request has been made by the user ( 411 ). an extension request is initiated when the user depresses power switch 305 quickly followed by pressing reset switch 403 quickly during the last 2 minutes of remaining time available . in this case , pressing the reset switch will not cause sbc 303 to pulse the reset signal of personal computer 300 . the routines that detect the switch presses ( 410 ) set and clear a flag that is being monitored once per second ( 411 ). although the present embodiment is designed such that time extension requests can only be made during the last 2 minutes of play , other time ranges could be chosen . further , one skilled in the art could see how to make this value user configurable or to disable this limitation thus allowing the request to be made at any time during or before game play . if an extension request has been made , the program checks to see if the current date is the same date as stored with the last extension granted ( 412 ). if not , then the request counter for that user is cleared . the program then increments the request counter for that user ( 413 ) and if the number of requests does not exceed the amount allowed each day ( 414 ), the program adds the extension time to the remaining user time ( 415 ) and sets the last extension granted ( for that user ) date to the current date . the extension request count and last extension granted date for each user are stored in files on the microsd card on sbc 303 to ensure persistence should the system be unplugged . each time an extension is granted the values for that user are updated on the files on the microsd card . regardless of whether the extension has been granted or not , the routine clears the extension request flag . the program then returns to periodic updates ( 406 ) to wait for the next 1 second periodic timer to occur . when time again runs below 2 minutes remaining ( 407 ), the visual warning is provided ( 408 ) and the user may now again make another request . if so this is detected ( 410 ) and the date is again checked ( 412 ) and the request count incremented ( 413 ). if the request count is now greater than the allowed number of requests ( 414 ) each day , the request is denied and no extension is given and the program returns to periodic update function ( 406 ). once the remaining time expires ( 409 ), the program returns to login screen ( 401 ) thus switching the usb and video and powering down personal computer 300 by pulsing the power switch signal input to personal computer 300 . while the first example embodiment uses dedicated hardware and software to inforce usage limits , one skilled in the art could see how the extension request features could be added to a personal computer operating system or to gaming console parental control software . for both local and remotely configured parental controls , the additional settings could be added to the parental control settings database . if the feature is enabled , the pc operating system or gaming console parental control software can allow time extensions when requested and authorized . a specific combination of keypresses , button presses , mouse clicks or even gaming controller patterns could be used to signal the request . request for extensions could even be done using bluetooth devices such as remote controls and smart phones running a custom app . the integration into the operating system could be accomplished by the operating system vendor or alternatively the os vendor could provide an expanded parental control api so that third parties could easily develop the extension request feature . the previous alternate embodiment would integrate the extension request features into the operating systems or use software conforming to the operating system parental control api . one skilled in the art could envision an alternate embodiment that is completely independent of operating system or parental control apis . a program or system service , running automatically when the operating system initialized can provide much or all of its own login authentication , user ids , passwords and all parental control settings . the program would require users to log in before gaining access to the computer and would provide time monitoring and limiting functions independent of the operating system parental control features . this software would be designed and developed the same way independent parental control software programs are developed today .
a video gaming system includes a motherboard with video display output , a usb and video switching board and a single board computer . the single board computer connects to the front panel power and reset switches , the switching board and the motherboard power switch input . upon user input to the software program running on the single board computer , a limitations database is accessed . if time is allowed , the program powers the motherboard and switches the usb keyboard and video outputs to the motherboard . during the last minutes of allowed time , the program periodically flashes the display warning the user and , through power and reset switch presses , a time extension can be requested . if allowed , according to the database , use time is extended by the predefined setting . otherwise time runs out normally and the motherboard is powered off and the usb and video circuits switched back to the single board computer .