Controlled environment communication system

Methods and systems for providing a communication system in a controlled environment are disclosed herein. A communication server establishes a communication session between client devices located within a controlled environment, and routes communication data between the client devices via the communication session. In some embodiments, the communication server stores the communication data as confidential communications based on profile information corresponding to the clients associated with the client devices. Further, the communication server manages access to the confidential communications based on profile information associated with the clients, and the subject matter of the confidential communications.

FIELD OF THE INVENTION

This disclosure relates to a controlled environment communication system.

BACKGROUND OF THE INVENTION

American prison institutions house millions of individuals in controlled environments all over the country. Many modern prison institutions employ archaic means to facilitate communication between inmates and prison staff. For example, many prison still require inmates to prepare and submit written forms in order to communicate with administration. Further, many controlled environments fail to provide safe and confidential means for inmates to communicate with staff members about misconduct by other inmates and staff members within the controlled environment.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

A further understanding of the invention can be obtained by reference to a preferred embodiment set forth in the illustrations of the accompanying drawings. Although the illustrated embodiment is merely exemplary of systems for carrying out the invention, both the organization and method of operation of the invention, in general, together with further objectives and advantages thereof, may be more easily understood by reference to the drawings and the following description. The drawings are not intended to limit the scope of this invention, which is set forth with particularity in the claims as appended or as subsequently amended, but merely to clarify and exemplify the invention.

DETAILED DESCRIPTION OF THE INVENTION

As required, a detailed illustrative embodiment of the invention is disclosed herein. However, techniques, systems and operating structures in accordance with the invention may be embodied in a wide variety of forms and modes, some of which may be quite different from those in the disclosed embodiment. Consequently, the specific structural and functional details disclosed herein are merely representative, yet in that regard, they are deemed to afford the best embodiment for purposes of disclosure and to provide a basis for the claims herein, which define the scope of the invention. The following presents a detailed description of the preferred embodiment of the invention.

For purposes of this discussion, any reference to the term “module” shall be understood to include at least one of software, firmware, and hardware (such as one or more circuit, microchip, or device, or any combination thereof), and any combination thereof. In addition, it will be understood that each module may include one, or more than one, component within an actual device, and each component that forms a part of the described module may function either cooperatively or independently of any other component forming a part of the module. Conversely, multiple modules described herein may represent a single component within an actual device. Further, components within a module may be in a single device or distributed among multiple devices in a wired or wireless manner.

FIG. 1illustrates a block diagram of an example framework for providing a communication system100in a controlled environment102(e.g., correctional facility, detention center, hospital, dormitory, mental health institution, etc.), according to an exemplary embodiment. In some embodiments, the controlled environment102is arranged into areas, stations, or regions associated with various functions (e.g., cell block, dining hall, commissary, library, exercise yard, hallway(s), etc.).FIG. 1shows interactions between a controlled environment communication server104, an inmate device106, and a staff device108via a communication network(s)110.

The communication network110may include any or all of a private network, personal area network (PAN), Local-Area Network (LAN), a Wide-Area Network (WAN), or the Internet. Further, the connection between any of the controlled environment communication server104, the inmate device106, or the staff device108, and the communication network(s)110may be a wireless connection (e.g., Bluetooth™, Wi-Fi connection, etc.), or a wired connection (e.g., Ethernet, universal serial bus (USB), etc.).

As illustrated inFIG. 1, the inmate device106is associated with an inmate112. Further, the inmate112may be confined to the controlled environment102. For example, the inmate112may be imprisoned within the controlled environment102in accordance with a prison sentence. In some embodiments, the inmate device106is provided to the inmate112for entertainment, monitoring, and/or medical purposes within the controlled environment102. Additionally, the staff device108is associated with a staff member114employed at the controlled environment102. Some examples of the staff member114may include correctional officers, investigative officers, medical practitioners, custodial staff, administrative staff, contractors, etc. In some instances, the staff member114may be responsible for monitoring the safety and/or well-being of the inmate112.

Some examples of the inmate device106and/or staff device108, include smart phones and mobile communication devices, tablet computing devices, desktops, laptops, netbooks and other portable computers, wearable computing devices, and any other computing device capable of sending communications to the controlled environment communication server104.

The controlled environment communication server104provides a communication system for authorized devices (e.g., the inmate device106and the staff device108) within the controlled environment102. Referring toFIG. 1, the inmate112may endeavor to communicate with the staff member114as a result of misconduct within the controlled environment102. As shown inFIG. 1, the inmate device106sends a communication request116to the controlled environment communication server104via the communication network(s)110. Further, the communication request116includes a client identifier118corresponding to the inmate112, and a called party identifier120corresponding to the staff member114.

Upon receipt of the communication request116, the controlled environment communication server104determines whether the inmate112and the staff member114are permitted to communicate with each other via the communication system100. If the inmate112and the staff member114are permitted to communicate with each other via the communication system100, the controlled environment communication server104establishes a communication session122between the inmate device106and the staff device108. In some embodiments, the communication session122is established over the communication network(s)110. In some other embodiments, the communication session122is established over a network other than the communication network(s)110.

Once the communication session122is established, the inmate112and the staff member114may communicate via the communication session122. As shown inFIG. 1, the inmate device106sends communication data124to the staff device108via the communication session122, and the staff device108sends communication data126to the inmate device106via the communication session122. The communication session122includes at least one of a video call, audio call (e.g., internet based telephony, cellular based communication, etc.), or text based communication (e.g., short message service, instant messaging, multimedia messaging service, enhanced message service).

In some embodiments, the controlled environment communication server104stores the communication data124and the communication data126for monitoring purposes. Further, the controlled environment communication server104may store the communication data124and the communication data126as confidential communications. If the controlled environment communication server104stores the communication data124and the communication data126as confidential communications, the controlled environment communication server104restricts access to the communication data124and the communication data126to authorized parties. For example, if the communication data124and the communication data126are stored as confidential communications, only staff members having investigative and/or administrative duties may be able to access the communication data124and the communication data126. In some examples, the controlled environment communication server104stores the communication data124and the communication data126as confidential communications based at least in part on the inmate112, the staff member114, and/or the subject matter of the communication data124and the communication data126.

Confidential communications, as referred to herein, include audio, visual, and/or textual conversations between two or more clients of the communication system100that pertain to potential misconduct, misconduct, and/or gross neglect within the controlled environment102. For example, confidential communications may include communications pertaining to excessive force by staff members against inmates. As another example, confidential communications may also include communications pertaining to possession of contraband by inmates within the controlled environment102. As yet still another example, confidential communication may also include communications pertaining to sexual misconduct between inmates and/or staff members within the controlled environment102.

FIG. 2illustrates a block diagram of an example framework for providing a communication system200in a controlled environment202, according to an exemplary embodiment.FIG. 2shows illustrative interactions within the controlled environment202between a communication server204, an inmate device206(e.g., inmate device106) associated with an inmate208, inmate devices210(1)-(N) (e.g., inmate device106) associated with inmates212(1)-(N), staff devices214(1)-(N) (e.g., staff device108) associated with staff members216(1)-(N), and sensors and controllers218(1)-(N). As illustrated inFIG. 2, the communication server204, the inmate device206, the inmate devices210, the staff devices214(1)-(N), and the sensors and controllers218(1)-(N) communicate via a communication network(s)220.

The controlled environment202is arranged into areas, stations, or regions associated with various functions. For instance, the controlled environment202may be physically and/or logically organized to include a staff member station, one or more cell blocks, a dining hall, commissary, library, exercise yard, hallway(s), etc. Further, the inmate208and the inmates212may be confined to the controlled environment202. Additionally, the staff members216may be employed at the controlled environment202. Some examples of the staff members216may include correctional officers, medical staff, custodial staff, administrative staff, contractors, etc. In addition, the staff members216may be responsible for monitoring the safety and/or well-being of the inmate208and the inmates212.

Further, the sensors and controllers218are placed throughout the controlled environment202for monitoring and administrative purposes. Some examples of the sensors and controllers218include surveillance cameras, thermostats, network access points, location beacons, door controllers, lighting controllers, sprinkler system controllers, etc. In some embodiments, the sensors and controllers218are configured to detect the inmate device206, the inmate devices210, and/or the staff devices214within a predetermined distance of the sensors and controllers218. For example, the sensors and controllers218read scannable indicia (e.g., RFID, barcode, etc.) of the inmate device206, inmate devices210, and the staff devices214. As another example, the sensors and controllers218communicate with the inmate device206, inmate devices210, and the staff devices214via the communication network(s)220.

In some embodiments, the individual inmates212are associated with particular inmate devices210. For example, a first inmate212(1) is associated with a first inmate device210(1), an Nth inmate212(N) is associated with an Nth inmate device210(N), and so forth. Further, individual staff members216are associated with particular staff devices214. For example, a first staff member216(1) is associated with a first staff device214(1), an Nth staff member216(N) is associated with an Nth staff device214(N), and so forth.

The communication network(s)220may include any or all of a private network, personal area network (PAN), Local-Area Network (LAN), a Wide-Area Network (WAN), or the Internet. Further, the connection between any of the communication server204, the inmate device206, the inmate devices210, the staff devices214, or the sensors and controllers218, and the communication network(s)220may be a wireless connection (e.g., Bluetooth™, Wi-Fi connection, etc.), or a wired connection (e.g., Ethernet, universal serial bus (USB), etc.).

As shown inFIG. 2, the communication server204includes a communication service222, inmate information224, staff member information226, device information228, a chatbot service230, a communication analysis module232, stored communications234(1)-(N), a security module236, a search module238, and a tracking module240.

The inmate information224includes information about the inmate208and the inmates212confined to the controlled environment202. As illustrated inFIG. 2, the inmate information224includes inmate profiles242corresponding to the inmate208and the inmates212. For example, the first inmate profile242(1) is associated with the inmate208. In some instances, the inmate profiles242include information from one or more of a jail management system (JMS), an offender management system (OMS), a public database containing information on prison inmates, or booking information. Further, the inmate profiles242include historical location information, previous residences or correctional facilities, gang affiliations, family members, persons (e.g., victims, co-defendants, or witnesses) associated with legal proceedings involving an inmate, languages and/or dialects spoken by an inmate, device usage history, historic communication history, biometric information associated with an inmate, speech recognition information associated with the inmate, encryption information, authentication information, authorization information, incident reports, visitor logs, etc.

The staff member information226includes information about the staff members216associated with the controlled environment202. As illustrated inFIG. 2, the staff member information226includes staff member profiles244corresponding to the staff members216. For example, a first staff member profile244(1) is associated with a first staff member216(1), an Nth staff member profile244(N) is associated with an Nth staff member216(N), and so forth. In certain embodiments, the staff member profiles244include authentication information, encryption information, authorization information, biographical information, staff device information, contact information, employment information, employee role, job title information, communication history, incident information, complaint history, etc. For example, the first staff member profile244(1) may indicate that the first staff member216(1) has an investigative role within the controlled environment202. As another example, the first staff member profile244(1) may indicate that the first staff member216(1) has an administrative role within the controlled environment202.

The device information228includes device profiles246corresponding to the inmate device206, the inmate devices210, and the staff devices214. For example, a first device profile246(1) is associated with the inmate device206. In some instances, the device profiles246include a device name, a device manufacturer, firmware identifier, operating system identifier, upgrade history, device capabilities, installed applications, and/or device usage history. Further, in some instances, the device profile246(1) identifies that the inmate208is currently in possession of the inmate device206, and/or the current location of the inmate device206.

The chatbot service230is a computer program component configured to communicate with the inmate208, the inmates212, and the staff members216. Some examples of the chatbot service230include conversational agents, dialog systems, conversational programs, etc. An example of a chatbot system is disclosed in U.S. patent application Ser. No. 15/174,231 by Hodge, entitled “Personalized Chatbots for Inmates,” filed on Jun. 6, 2016, the entire contents of which are incorporated herein by reference. In some embodiments, the chatbot service230is configured to conduct conversations via voice communications and textual communications. For example, the chatbot service230may include a machine learning component that employs classification models, natural language processing models, and/or deep learnings models to determine responses to the communication data248received from the inmate device206, the inmate devices210, and the staff devices214.

In some instances, the chatbot service230dynamically generates responses to the communication data248received from the inmate device210, the inmate devices210, and the staff devices214. In some other instances, the chatbot service230identifies pre-determined responses corresponding to the communication data248received from the inmate device206, the inmate devices210, and the staff devices214. By providing the inmate208and the inmates212the opportunity to converse with the chatbot service230, the communication system200allows the inmate208and the inmates212to confidentially communicate about activity within the controlled environment202.

Additionally, in some embodiments, the chatbot service230identifies the proper staff member216to notify about the communication data248. For example, if the chatbot service230determines that the communication data248relates to a medical emergency, the chatbot service230sends a notification to a staff member216with medical duties. In some embodiments, the notification includes at least an electronic message comprising at least a portion of the communication data248.

As another example, if the determines that particular communication data248relates to misconduct by the staff member216(3) having investigative privileges, the chatbot service230sends a notification to a staff member216(4) with administrative duties. In some embodiments, the notification includes an electronic message comprising at least a portion of the particular communication data248. Additionally, the chatbot service230instructs the security module236to prevent access by the staff member216(3) to the stored communications234corresponding to the particular communication data248even though the staff member216(3) has investigative privileges.

The communication service222manages the availability of the inmate device206, the inmate devices210, the staff devices214, and/or instances of the chatbot service230to communicate via the communication server204. For example, the communication service222may include a presence based communication service. Further, the communication service222establishes communication sessions250(1)-(N) between communication clients (e.g., inmate device206, the inmate devices210, the staff devices214, and/or instances of the chatbot service230) via the communication network(s)220.

For example, suppose the inmate208endeavors to communicate with the staff member216(1) to provide information about a physical attack that occurred within the controlled environment202. The inmate208can employ the inmate device206to transmit a communication request252to the communication server204. In some embodiments, the inmate208uses a communication application254installed on the inmate device206to initiate communications with the staff member216(1). For example, the communication application254presents a user interface to the inmate208, the user interface including graphical components that provide a means for the inmate208to attempt to initiate communications with the staff member216(1). In some embodiments, the communication application254presents a graphical user interface with selectable icons corresponding to the inmates212, staff members216, and an instance of the chatbot service230available to communicate via the communication system200.

As shown inFIG. 2, the communication request252includes the client identifier256identifying the inmate208, and the called party identifier258identifying the staff member216(1). In some embodiments, the called party identifier258uniquely corresponds to an individual client. In some other embodiments, the called party identifier258corresponds to a logical group that includes one or more clients within the communication system200. Some examples of logical groups include correctional officers, medical staff, custodial staff, administrative staff, contractors, etc. In yet still some other embodiments, the called party identifier258corresponds to a plurality of clients (e.g., the inmates212, the staff members216, and the chatbot service230) within the communication system200. Thus, allowing the inmate208to establish a multi-client communication session250(1) (e.g., conference call, group chat, etc.). Additionally, or alternatively, the inmate208may add additional clients to the communication session250(1) after it has been established.

Upon receipt of the communication request252, the communication service222determines whether the inmate208is authorized to communicate with the staff member216(1) via the communication system200. In some embodiments, the communication service222determines whether the inmate208is authorized to communicate with the staff member216(1) based on at least one of the inmate information224and/or the staff member information226. For example, the security module236determines whether the staff member216(1) is permitted to communicate with the inmate208based on an access control list (e.g., blacklist, whitelist, etc.) included in the staff member profile244(1) and/or the inmate profile242(1). As another example, the security module236determines whether the staff member216(1) is permitted to communicate with the inmate208based on an employee role and/or job title information of the first staff member as indicated in the staff member profile244(1).

When the inmate208(1) is authorized to communicate with the staff member216(1), the communication service222establishes the communication session250(1) between the inmate device206and the staff device214(1). Further, in some embodiments, the communication sessions250are between two communication devices (e.g., the inmate device206, the inmate devices210, the staff devices214, the communication server204, etc). In some other embodiments, the communication sessions250are between more than two communication devices. Further, the communication sessions250may include at least one of a video call, telephone call, or text based communication.

As the inmate device206and the staff device214(1) send the communication data248via the communication session250(1), the communication service222stores the communication data248as the stored communication234(1). Further, the communication service222manages and audits access to the stored communication234(1). For example, the communication service222controls reading, writing, editing, deletion of the stored communication234(1) based on authorization information included in the staff member information226. Additionally, the communication service222records attempts by the staff members216and staff devices214to access the stored communication234(1).

In some embodiments, the communication service222determines that the communication data248is confidential based on at least one of the inmate information224or staff member information226. For example, the staff member profile244(1) may indicate that the staff member216(1) has investigative privileges within the controlled environment202. As such, the staff member216(1) may need to conduct confidential communications with the inmate208, the inmates212, and/or the staff members216within the controlled environment202. When the communication service222determines the communication data248over the communication session250(1) is confidential, the communication services222stores the communication data248as confidential stored communications262(1). Additionally, the communication service222sends a confidential notification264to the inmate device206and/or the staff device214(1). Upon receipt of the confidential notification264, the communication application254indicates to the inmate208that the communication session250(1) is confidential. In some embodiments, the inmate device206provides a visual or audible alert to the inmate208via the I/O devices266of the inmate device206.

Further, the communication service222stores information indicating that the confidential stored communications262are confidential. In some embodiments, the communication service222creates metadata indicating that the confidential stored communications262pertaining to the communication data248are confidential. Additionally, or alternatively, the communication service222generates database information indicating that the confidential stored communications262pertaining to the communication data248are confidential.

In some embodiments, the communication service222restricts access to the confidential stored communications262. For example, the communication service222restricts access to the confidential stored communications262to staff members216with investigative privileges. As another example, the communication service222denies request to delete the confidential stored communications262. For instance, the communication service222may deny a request to delete a particular communication of the confidential stored communications262based upon the age of the particular communication of the confidential stored communications262. In some embodiments, the communication service222denies a request to delete the one of the privilege stored communications262is the difference between the creation date of the confidential stored communication262and the current date is less than a predetermined threshold.

In some other instances, the communication service222may deny a request to edit or delete a particular confidential stored communication262when the particular confidential stored communication262pertains to an open investigation within the controlled environment202. In yet still some other instances, the communication service222may deny a request to edit or delete a particular confidential stored communication262when the particular confidential stored communication262pertains to potential misconduct by the staff members216within the controlled environment202.

The communication analysis module232determines one or more subjects of the communication sessions250for monitoring purposes. In some embodiments, the communication analysis module232employs keyword monitoring to determine the subject of the communication sessions250. For example, the communication analysis module232may monitor the communication data for identifiers (e.g., names, nicknames, attributes, etc.) of individual staff members216within the controlled environment202. Additionally, or alternatively, the communication analysis module232employs classification models, natural language processing, and other machine learning techniques to determine the subject of the communication sessions250. In some instances, the communication analysis module232determines that the communication sessions250are confidential based on the subjects identified within the communication data248. For example, the communication analysis module232is trained to detect that the communication session250(1) pertains to potential misconduct by the staff members216and/or inmates212.

In some embodiments, the communication analysis module232determines that the communication data248pertains to the staff members216(2)-216(N) smuggling contraband into the controlled environment202. In some other embodiments, the communication analysis module232determines that the communication data248pertains to a planned attack by the inmates212. In yet still some other embodiments, the communication analysis module232determines that the communication data248pertains to an attack witnessed by the inmate208within the controlled environment202.

Once the communication analysis module232determines that subject matter of the communication session250(1) pertains to confidential subject matter, the communication analysis module232instructs the communication service222to store the communication data248as the confidential stored communication262(1). Further, the communication analysis module232can instruct the communication service222to the restrict access to the confidential stored communication262(1) to one or more staff members216associated with the misconduct discussed in the communication session250(1). For example, if the communication data248pertain to potential misconduct by the staff member216(2), the communication service222updates the staff member profile244(2) to indicate that the staff member216(2) should not permitted to access the confidential stored communication262(1) corresponding to the communication data248even if the staff member216(2) has investigative privileges or administrative privileges.

Additionally, or alternatively, the inmate208or the staff member216(1) can request that the communication service222store the communications over the communication session250(1) as the confidential stored communications262. For example, the communication application254can a present a graphical user interface with a control for requesting that the communication service process communications over the communication session250(1) as confidential. Further, when the inmate208selects the control, the communication request252can include an indication that the communication session250(1) should be processed as confidential by the communication service222.

In some embodiments, the communication analysis module232is further trained to detect that the communication data248pertain to a medical emergency within the controlled environment202. For example, the communication analysis module232determines that the communication data248includes at least one of an identifier of a medical illness, or a description of one or more symptoms corresponding to a medical illness. Further, the communication analysis module232instructs the communication service222to send the communication data248to a staff member216with medical duties.

The security module236performs authentication and authorization of the clients (e.g., the inmate208, the inmates212, and the staff members216), and/or the client devices (e.g., the inmate device206, the inmate devices210, and the staff devices214) of the communication service222. Furthermore, in certain embodiments, the security module236performs encryption and decryption of data transmitted within the communication system200. In addition, the security module236manages authentication information and authorization information for performing authentication and authorization of the clients and client devices. Some examples of authentication information include authentication credentials, user identifiers, device identifiers, passwords, certificates, cookies, tokens, etc. Some examples of authorization information include access control lists (ACLs), client capabilities, client device capabilities, security policy information, etc.

Further, the security module236manages the secure storage of the stored communications234. In some embodiments, the security module encrypts and decrypts the stored communications234. Further, the security module236controls access to the stored communications234based on at least one of the inmate information224, and the staff member information226, and the device information226. For example, the staff member216(1) may request access to the stored communications234(1). As a result, the security module236determines whether the staff member216(1) is permitted to access the stored communications234(1) based on an access control list included in the staff member profile244(1). If the security module236determines that the staff member216(1) is permitted to access the stored communications234(1), the security module236may ensure that the staff device214(1) is provided access to an unencrypted version of the stored communications234(1). Additionally, the security module236monitors and audits attempts to access the stored communications234. In some embodiments, the security module logs attempts to access the stored communications234by the inmate device206, the inmate devices210, and/or the staff devices214.

The search module238provides, to the inmates212and/or the staff members216, the ability to search the stored communications234. In some embodiments, the staff devices214send search queries268(1)-(N) to the search module238. For example, suppose the staff member216(1) endeavors to view stored communications234related to the staff member216(2). The staff member216(1) employs the staff device214(1) to send the search query268(1) to the search module238. As shown inFIG. 2, the search query268(1) includes a client identifier269of the staff member216(1), and search terms270(i.e., an identifier of the staff member216(2)). In some examples, the search terms270includes at least one of identifiers of participants associated with a stored communication234, one or more terms used in a stored communication234, one or more subjects associated with the stored communications234, a date and/or time range associated with the stored communications234, one or more categories associated with the stored communications234, and/or one or more descriptive tags associated with the stored communications234.

Upon receipt of the search query268(1), the search module238determines search results that include stored communications234wherein the staff member216(1) was a participant and stored communications234wherein the staff member216(1) was a subject. Further, the security module236determines modified search results272based upon the client identifier269and/or metadata corresponding to the search results. For example, the security module236determines the modified search results272by filtering stored communications234from the search results that the staff member216(1) is not authorized to access based upon the staff member profile244(1) associated with the client identifier269. Once the security module236determines the modified search results272, the search module238sends the modified search results272to the staff device214(1).

The tracking module240monitors the location of the clients (e.g., the inmate208, the inmates212, and the staff members216) and client devices (e.g., the inmate device206, the inmate devices210, and the staff devices214) within the controlled environment202. As illustrated inFIG. 2, the tracking module240receives the location information274from the sensors and controllers218and/or the client devices (e.g., inmate device206, the inmate devices210, and the staff devices214). For example, the sensor and controller218(1) sends the first location information274(1) to the communication server204. Further, the first location information274(1) includes a source device identifier276(1) that identifies the sensor and controller218(1) that sends the first location information274(1), and a location identifier278of the sensor and controller218(1). As used herein, a location identifier includes a name, a coordinate, positional descriptor, or any information capable of identifying a location of a device within the controlled environment202.

In some embodiments, the first location information274(1) further includes proximal device identifiers280(1) that identify inmate devices210and staff devices214within a predetermined proximity of the source device (i.e., the sensor and controller218(1)). For example, the first location information274(1) includes the proximal device identifiers280(1) corresponding to the inmate device206and staff device214(1), respectively. In some embodiments, the sensors and controllers218periodically detect the inmate devices210and staff devices214within a predetermined proximity of the sensors and controllers218, and send the location information274including proximal device identifiers280(1) corresponding to the detected inmate devices210and staff devices214.

Upon receipt of the location information274from the sensors and controllers218and/or the client devices (e.g., the inmate device206, inmate devices210and staff devices214), the tracking module240determines the locations of the client devices and associated clients (e.g., the inmate208, the inmates212, and the staff members216). Further, the tracking module240updates the inmate information224, inmate device information228, and staff member information226to reflect the determined locations of the clients and the client devices. For example, if the tracking module240receives the location information274(1), the tracking module240updates the first inmate profile242(1) is associated with the inmate208to indicate that the inmate208is located within an area of the controlled environment202identified by the location identifier278(1).

In some embodiments, the tracking module240determines whether the privacy afforded a client during a communication session250will be compromised by movement of the inmate208, the inmates212, and/or the staff members216within the controlled environment202. For example, if the inmate208is communicating with the staff member216(1) via the communication application254and the tracking module240determines that one or more inmates212are moving within a predetermined proximity of the inmate device206, the tracking module240sends the incognito notification282to the inmate device206. Upon receipt of the incognito notification282, the communication application254indicates to the inmate208that another person will be within a predetermined proximity of the inmate208. For instance, the communication application254provides a visual or audible alert to the inmate208via the I/O devices266of the inmate device206.

In some embodiments, the communication application254pauses the communication session250(1) and/or masks evidence of the communication session250(1) based upon receipt of the incognito notification282. For example, the communication application254enters an incognito mode as described in further detail with respect toFIG. 3E. Additionally or alternatively, the communication application254enters the incognito mode based at least in part on a gesture movement performed with respect to the inmate device206. For example, the sensors284of the inmate device206may detect that the inmate208has moved the inmate device206in accordance with a predetermined gesture pattern defined by an orientation, speed of movement, and/or position of the inmate device206. As another example, the inmate208may input a gesture (e.g., swipe, pinch, etc.) to the I/O devices266of the inmate device206.

In addition, the tracking module240generates a graphical user interface including that illustrates at least the locations of the clients (e.g., the inmate208, the inmates212, and the staff members216) and client devices (e.g., the inmate device206, the inmate devices210, and the staff devices214) within the controlled environment202.

FIGS. 3A-3Fillustrate example graphical user interfaces for providing communication system in a controlled environment, according to exemplary embodiments.

FIG. 3Aillustrates an example graphical user interface300displayed on an inmate device operating in a normal mode during a video call. As shown inFIG. 3A, the graphical user interface300includes a participant identifier302that identifies a participant in an active communication session (e.g., the communication session250(1)). Further, the graphical user interface300includes a communication interface304that includes visual interface for the video call, and a call duration status306indicating the temporal duration of the communication session. As further shown inFIG. 3A, the graphical user interface300includes a mute control308that mutes the communication session, and an end control310that ends the communication session.

FIG. 3Billustrates an example graphical user interface312displayed on an inmate device operating in a confidential mode during a video call. In some embodiments, the example graphical user interface312is displayed in response to receipt of a confidential notification (e.g., the confidential notification264). As shown inFIG. 3B, the graphical user interface312includes a participant identifier314that identifies a participant in an active communication session (e.g., the communication session250(1)). Further, the graphical user interface312includes a communication interface316that includes visual interface for the video call, and a call duration status318indicating the temporal duration of the communication session. As further shown inFIG. 3B, the graphical user interface300includes a mute control320that mutes the communication session, an end control322that ends the communication session, and the confidential status indicators324(1) and324(2).

The confidential status indicators324(1) and324(2) provide visual indication to a user that the current communication session is confidential. More specifically, the confidential status indicator324(1) includes text explicitly communicating that the communication session is confidential. Further, the confidential status indicator324(2) includes visual modifications to the graphical components presented in the normal mode. For instance, the confidential status indicator324(2) includes a visual modification to the communication interface316when compared to communication interface304of the normal mode. Some examples of visual modifications include changes to the size, shapes, colors, background graphics, layout, font, and/or typeface of graphical elements presented within the graphical user interface300of the normal mode.

FIG. 3Cillustrates an example graphical user interface326displayed on an inmate device operating in a normal mode during a textual chat. As shown inFIG. 3C, the graphical user interface326includes a participant identifier328that identifies a participant in an active communication session (e.g., the communication session250(1)). Further, the graphical user interface326includes a communication interface330that includes chat log for the textual chat, and a chat duration status332indicating the temporal duration of the communication session. As further shown inFIG. 3C, the graphical user interface326includes and an end control334that ends the communication session.

FIG. 3Dillustrates an example graphical user interface336displayed on an inmate device operating in a confidential mode during a textual chat. In some embodiments, the example graphical user interface336is displayed in response to receipt of a confidential notification (e.g., the confidential notification264). As shown inFIG. 3D, the graphical user interface336includes a participant identifier338that identifies a participant in an active communication session (e.g., the communication session250(1)). Further, the graphical user interface334includes a communication interface340that includes a chat log for the textual chat, and a chat duration status342indicating the temporal duration of the communication session. As further shown inFIG. 3D, the graphical user interface334includes an end control344that ends the communication session, and the confidential status indicators346(1) and346(2).

The confidential status indicators346(1) and346(2) provide visual indication to a user that the current communication session is confidential. More specifically, the confidential status indicator346(1) includes text explicitly communicating that the communication session is confidential. Further, the confidential status indicator346(2) includes visual modifications to the graphical components presented in the normal mode. For instance, the confidential status indicator346(2) includes a visual modification to the communication interface340when compared to communication interface330of the normal mode. Some examples of visual modifications include changes to the size, shapes, colors, background graphics, layout, font, and/or typeface of graphical elements presented within the graphical user interface336of the normal mode.

FIG. 3Eillustrates an example graphical user interface348displayed on an inmate device operating in incognito mode. In some embodiments, the example graphical user interface348is displayed in response to receipt of an incognito notification (e.g., the incognito notification282). As described in detail above, when the inmate device receives an incognito notification, a communication application (e.g., the communication application254) will transition from one of the graphical user interfaces (graphical user interfaces300,312,326, and334) ofFIG. 3A-3Dto the graphical user interface348in order to prevent an interloper from eavesdropping on the communication session. As shown inFIG. 3E, the incognito mode causes a standard background wallpaper350of the inmate device to be displayed. Additionally, or alternatively, the incognito mode causes the inmate device to open up another application installed on the inmate device, and display a graphical user interface corresponding to the application.

FIG. 4illustrates a process400for providing a communication system in a controlled environment. The process400is illustrated as a collection of blocks in a logical flow graph, which represent a sequence of operations that can be implemented in hardware, software, or a combination thereof. The blocks are referenced by numbers402-412. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processing units (such as hardware microprocessors), perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations is described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and/or in parallel to implement the process.

At402, a controlled environment communication server stores an inmate profile associated with an inmate located within a controlled environment. For example, the communication server204stores the inmate information224that includes the inmate profile242(1) associated with the inmate208.

At404, the communication server associates the inmate profile with a communication application installed in an inmate device assigned to the inmate. For example, the communication server204associates the inmate profile242(1) with the communication application254installed on the inmate device206possessed by the inmate208. In some embodiments, the communication server204updates the inmate profile242(1) to indicate that the inmate208is associated with the instance of the communication application254installed on the inmate device206.

At406, the controlled environment communication server receives, from the inmate device, a communication request, the communication request including an inmate profile identifier. For example, the communication service222receives the communication request252from the communication application254on the inmate device206via the communication network(s)220. In some embodiments, the communication request252includes the client identifier256identifying the inmate208, and the called party identifier258identifying the staff member216(1).

At408, the communication server establishes a communication session between the communication application and a controlled environment device application based on the inmate profile. For example, the communication service222establishes the communication session250(1) between the communication application254installed on the inmate device206and the staff device214(1). In some embodiments, the communication session250(1) may include at least one of a Voice over Internet Protocol (VoIP) session, real-time transport protocol (RTP) session, extensible messaging and presence protocol (XMPP) session over the communication network(s)220.

In some embodiments, the communication service222establishes the communication session250(1) based at least in part on the inmate information224and/or the staff member information226. For example, the communication service222determines whether the inmate208is permitted to communicate with the staff member216(1) via the communication system200based on the inmate profiles242and/or the staff member profiles244. In some instances, the inmate profile242(1) indicates that the inmate208is not permitted to communicate with the staff member216(1). In some other instances, the staff member profile244(1) indicates that the staff member216(1) is not currently available to communicate with the inmate208.

At410, the communication server routes communication data between the communication application and the controlled environment device application via the communication session. For example, the communication service222acts as a relay interface, and routes the communication data248between the communication application254on the inmate device206and a controlled environment device application installed on the staff device214(1), via the communication session250(1).

At412, the communication server stores the communication session as a stored communication. For example, the communication service222stores the communication data248to the communication server204as the stored communications234. Thereby providing the ability to monitor and review communications between clients (e.g., the inmate208, the inmates212, and the staff members216) within the controlled environment202via the communication system200.

In some embodiments, the communication application254stores a log of the communication data248during the communication session250(1). Further, the communication application254sends the log of the communication session250(1) to the communication service222. Upon receipt of the log of the communication data248, the communication service222stores the log of the communication data248as the stored communications234.

FIG. 5illustrates a process500for providing a communication system in a controlled environment, according to some implementations. The process500is illustrated as a collection of blocks in a logical flow graph, which represent a sequence of operations that can be implemented in hardware, software, or a combination thereof. The blocks are referenced by numbers502-508. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable media that, when executed by one or more processing units (such as hardware microprocessors), perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations is described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and/or in parallel to implement the process.

At502, an inmate device sends a communication request to a communication server, the communication request including an inmate identifier associated with the inmate and a called party identifier. For example, the inmate device206sends the communication request252to the controlled environment communication server204. Further, the communication request252includes the client identifier256identifying the inmate208, and the called party identifier258identifying the staff member216(1).

At504, the inmate device establishes a communication session with a called party device associated with the called party identifier, wherein the communication session includes at least one of a video call, telephone call, or text based communication. For example, the inmate device206establishes the communication session250(1) with the staff device214(1).

In some embodiments, the communication session250(1) may include at least one of a Voice over Internet Protocol (VoIP) session, real-time transport protocol (RTP) session, extensible messaging and presence protocol (XMPP) session over the communication network(s)220. Further, in certain embodiments, the communication server204routes the communication data248between the communication application254installed on the inmate device206and the staff device214(1), via the communication session250(1).

At506, the inmate device receives a confidential notification from the communication server. For example, if the communication service222, chatbot service230, and/or the communication analysis module232determine that the communication data248is confidential, the communication server204sends the confidential notification264to the inmate device206and the staff device214(1).

In some embodiments, the communication service222determines that the communication data248are confidential based on at least one of the inmate information224or staff member information226. For example, the staff member profile244(1) may indicate that the staff member216(1) has investigative privileges within the controlled environment202. As such, the staff member216(1) may need to conduct confidential communications with the inmate208, the inmates212, and/or the staff members within the controlled environment202. Additionally, or alternatively, the chatbot service230and communication analysis module232may determine that the communication data248is confidential based on performing machine learning techniques to identify one or more subjects associated with the communication data.

At508, the inmate device visually indicates that the communication session is confidential via the display. For example, provides, to the inmate208, a visual and/or audible alert that the communication session250(1) is confidential via the I/O devices266.

FIG. 6illustrates select components of the communication server600(e.g., the controlled environment communication server104and the communication server204) that implements the functionality described above, according to an exemplary embodiment. The communication server600includes one or more servers or other types of computing devices that may be embodied in any number of ways. For instance, the modules, other functional components, and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, and so forth, although other computer architectures may additionally or alternatively be used.

Further, while the figures illustrate the components and data of the communication server600as being present in a single location, these components and data may alternatively be distributed across different computing devices and different locations in any manner. Consequently, the functions may be implemented by one or more computing devices, with the various functionality described above distributed in various ways across the different computing devices. Multiple communication servers600may be located together or separately, and organized, for example, as virtual servers, server banks and/or server farms. The described functionality may be provided by the servers of a single entity or enterprise, or may be provided by the servers and/or services of multiple different entities or enterprises.

In the illustrated example, the communication server600includes one or more processors602, one or more computer-readable media604, and one or more communication interfaces606. Each processor602is a single processing unit or a number of processing units, and may include single or multiple computing units or multiple processing cores. The processor(s)602can be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. For instance, the processor(s)602may be one or more hardware processors and/or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein. The processor(s)602can be configured to fetch and execute computer-readable instructions stored in the computer-readable media604, which can program the processor(s)602to perform the functions described herein.

The computer-readable media604include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable media604include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage, magnetic tape, magnetic disk storage, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device. Depending on the configuration of the communication server600, the computer-readable media604may be a type of computer-readable storage media and/or may be a tangible non-transitory media to the extent that when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.

The computer-readable media604is used to store any number of functional components that are executable by the processors602. In many implementations, these functional components comprise instructions or programs that are executable by the processors and that, when executed, specifically configure the one or more processors602to perform the actions attributed above to the communication server600. In addition, the computer-readable media604store data used for performing the operations described herein.

In the illustrated example, the functional components stored in the computer-readable media604include a communication service608, a chatbot service610, a communication analysis module612, a security module614, a search module616, and a tracking module618. Further, the computer-readable media604include stored communications620, inmate information622, staff member information624, and device information626. In addition, the inmate information622includes inmate profiles628, the staff member information624, includes staff member profiles630, and the device information626includes device profiles632.

Additional functional components stored in the computer-readable media604include an operating system634for controlling and managing various functions of the communication server600. The communication server600also include or maintain other functional components and data, such as other modules and data636, which include programs, drivers, etc., and the data used or generated by the functional components. Further, the communication server600includes many other logical, programmatic and physical components, of which those described above are merely examples that are related to the discussion herein.

The communication interface(s)606include one or more interfaces and hardware components for enabling communication with various other devices, such as the client devices, or other computing devices, over the network(s)110and220. For example, communication interface(s)606facilitate communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks. As several examples, the communication server600and the inmate device206communicate and interact with one another using any combination of suitable communication and networking protocols, such as Internet protocol (IP), transmission control protocol (TCP), hypertext transfer protocol (HTTP), cellular or radio communication protocols, and so forth. Examples of communication interface(s) include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc.

The communication server600may further be equipped with various input/output (I/O) devices638. Such I/O devices include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports and so forth.

FIG. 7illustrates select example components of the inmate device700(e.g., the inmate device106, the inmate device206, the inmate devices210, and the staff devices214) that implements the functionality described above, according to an exemplary embodiment. The inmate device700may be any of a number of different types of personal computing devices. Some examples of the inmate device700include smart phones and mobile communication devices, tablet computing devices, desktops, laptops, netbooks and other portable computers, wearable computing devices, and any other portable device capable of sending communications and performing the functions according to the techniques described herein.

In the illustrated example, the inmate device700includes one or more processors702, one or more computer-readable media704, one or more communication interfaces706, a microphone708, and a camera710. Each processor702is a single processing unit or a number of processing units, and may include single or multiple computing units or multiple processing cores. The processor(s)702can be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. For instance, the processor(s)702may be one or more hardware processors and/or logic circuits of any suitable type specifically programmed or configured to execute the algorithms and processes described herein. The processor(s)702can be configured to fetch and execute computer-readable instructions stored in the computer-readable media704, which can program the processor(s)702to perform the functions described herein.

The computer-readable media704include volatile and nonvolatile memory and/or removable and non-removable media implemented in any type of technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable media704include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, optical storage, solid state storage, magnetic tape, magnetic disk storage, network attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired information and that can be accessed by a computing device. Depending on the configuration of the inmate device700, the computer-readable media704may be a type of computer-readable storage media and/or may be a tangible non-transitory media to the extent that when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.

The computer-readable media704is used to store any number of functional components that are executable by the processors702. In many implementations, these functional components comprise instructions or programs that are executable by the processors and that, when executed, specifically configure the one or more processors702to perform the actions attributed above to the inmate devices (e.g., the inmate device106, the inmate device206, the inmate devices210, and the staff devices214). In addition, the computer-readable media704store data used for performing the operations described herein.

In the illustrated example, the functional components stored in the computer-readable media704include a communication application712, a location module714, and a gesture module716. As described in detail above, the communication application712presents a graphical user interface for sending communication requests (e.g., the communication request116and the communication request252), sending and receiving communication data124,126, and248, receiving confidential notifications (e.g., the confidential notification264) and incognito notifications (e.g., and the incognito notification282) from a communication server (e.g., the communication servers104,204, and600), indicating that a communication session (e.g., the communication session122and the communication sessions250) is confidential in response to receiving a confidential notification, and entering an incognito mode in response to receiving an incognito notification. In some embodiments, the incognito mode of the communication application712includes entering a background application state that masks that the communication application712is being executed on the inmate device700.

In some embodiments, the location module714manages the transmission of location information (e.g., the location information274) to the communication servers104,204, and600. Further, the location module714determines a location identifier (e.g., the location identifier278) of the inmate device700. In some embodiments, the location module714includes a global positioning system (GPS), an indoor positioning system (IPS) device, or a global'naya navigatsionnaya sputnikovaya sistema (GLONASS) device. Further, the gesture module716is configured to detect gesture input to the inmate device700. If the gesture module716detects a particular gesture input associated with the incognito mode, the gesture module716instructs the communication application712to enter the incognito mode.

Additional functional components stored in the computer-readable media704include an operating system718for controlling and managing various functions of the inmate device700. The inmate device700also includes or maintains other functional components and data, such as other modules and data720, which include programs, drivers, etc., and the data used or generated by the functional components. Further, the inmate device700includes many other logical, programmatic and physical components, of which those described above are merely examples that are related to the discussion herein.

The communication interface(s)706includes one or more interfaces and hardware components for enabling communication with various other devices, such as the controlled environment communication server104, the communication server204, the communication server600, or other computing devices, over the network(s)110and220. For example, communication interface(s)706facilitates communication through one or more of the Internet, cable networks, cellular networks, wireless networks (e.g., Wi-Fi, cellular) and wired networks. As several examples, the communication server600and the inmate device700communicate and interact with one another using any combination of suitable communication and networking protocols, such as Internet protocol (IP), transmission control protocol (TCP), hypertext transfer protocol (HTTP), cellular or radio communication protocols, and so forth. Examples of communication interface(s) include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc.

FIG. 7further illustrates that the inmate device700includes a display722. Depending on the type of computing device used as the inmate device700, the display722may employ any suitable display technology. For example, the display722may be a liquid crystal display, a light emitting diode display, or any other suitable type of display able to present digital content thereon. In some embodiments, the display722includes touch sensor with the display722to provide a touchscreen display configured to receive touch inputs for enabling interaction with a graphic interface presented on the display722. Accordingly, implementations herein are not limited to any particular display technology. Alternatively, in some other embodiments, the inmate device700may not include a display722.

Furthermore, the inmate device700is equipped with various input/output (I/O) devices724. Such I/O devices724include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports, sensors (e.g., accelerometer, gyroscope, a compass, localization sensors, photometer, magnetometer, fingerprint sensors, etc.), and so forth. Additionally, the inmate device700includes various other components that are not shown, examples of which include removable storage, a power source, such as a battery and power control unit, and so forth.

It will be apparent to persons skilled in the relevant art(s) that various elements and features of the present disclosure, as described herein, can be implemented in hardware using analog and/or digital circuits, in software, through the execution of computer instructions by one or more general purpose or special-purpose processors, or as a combination of hardware and software.

It will be apparent to persons skilled in the relevant art(s) that various elements and features of the present disclosure, as described herein, can be implemented in hardware using analog and/or digital circuits, in software, through the execution of computer instructions by one or more general purpose or special-purpose processors, or as a combination of hardware and software.

The following description of a general purpose computer system is provided for the sake of completeness. Embodiments of the present disclosure can be implemented in hardware, or as a combination of software and hardware. Consequently, embodiments of the disclosure may be implemented in the environment of a computer system or other processing system. For example, the methods ofFIGS. 4-5can be implemented in the environment of one or more computer systems or other processing systems. An example of such a computer system800is shown inFIG. 8. One or more of the modules depicted in the previous figures can be at least partially implemented on one or more distinct computer systems800.

Computer system800includes one or more processors, such as processor804. Processor804can be a special purpose or a general purpose digital signal processor. Processor804is connected to a communication infrastructure802(for example, a bus or network). Various software implementations are described in terms of this exemplary computer system. After reading this description, it will become apparent to a person skilled in the relevant art(s) how to implement the disclosure using other computer systems and/or computer architectures.

Computer system800also includes a main memory806, preferably random access memory (RAM), and may also include a secondary memory808. Secondary memory808may include, for example, a hard disk drive810and/or a removable storage drive812, representing a floppy disk drive, a magnetic tape drive, an optical disk drive, or the like. Removable storage drive812reads from and/or writes to a removable storage unit916in a well-known manner. Removable storage unit816represents a floppy disk, magnetic tape, optical disk, or the like, which is read by and written to by removable storage drive812. As will be appreciated by persons skilled in the relevant art(s), removable storage unit816includes a computer usable storage medium having stored therein computer software and/or data.

In alternative implementations, secondary memory808may include other similar means for allowing computer programs or other instructions to be loaded into computer system800. Such means may include, for example, a removable storage unit818and an interface814. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, a thumb drive and USB port, and other removable storage units818and interfaces814which allow software and data to be transferred from removable storage unit818to computer system800.

Computer system800may also include a communications interface820. Communications interface820allows software and data to be transferred between computer system800and external devices. Examples of communications interface820may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc. Software and data transferred via communications interface820are in the form of signals which may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface820. These signals are provided to communications interface820via a communications path822. Communications path822carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels.

As used herein, the terms “computer program medium” and “computer readable medium” are used to generally refer to tangible storage media such as removable storage units816and818or a hard disk installed in hard disk drive810. These computer program products are means for providing software to computer system800.

Computer programs (also called computer control logic) are stored in main memory806and/or secondary memory808. Computer programs may also be received via communications interface820. Such computer programs, when executed, enable the computer system800to implement the present disclosure as discussed herein. In particular, the computer programs, when executed, enable processor804to implement the processes of the present disclosure, such as any of the methods described herein. Accordingly, such computer programs represent controllers of the computer system800. Where the disclosure is implemented using software, the software may be stored in a computer program product and loaded into computer system800using removable storage drive812, interface814, or communications interface820.

In another embodiment, features of the disclosure are implemented primarily in hardware using, for example, hardware components such as application-specific integrated circuits (ASICs) and gate arrays. Implementation of a hardware state machine so as to perform the functions described herein will also be apparent to persons skilled in the relevant art(s).