Patent ID: 12255790

DETAILED DESCRIPTION

The systems and methods described here disclose a viable APM solution implemented via a remote monitoring and application performance management platform100. Platform100can be implemented as an APM-as-a-service that allows end-users anywhere in the world to benefit from both automatic monitoring templates to customized management requirements, delivered at cloud speed. The platform can allow elimination of the need for on-premise hardware such that end-users will not need to acquire and manage their own hardware (HW)/software (SW) infrastructure for monitoring and automation of IT Applications. In addition, the system can eliminate the need to manually perform the associated routine IT processes and maintenance.

The disclosed platform100and system can provide a browser-based interface and notifications via e-mail or text messaging as well as integration with customer's Service Desk/Help Desk systems. Platform100remotely orchestrates complex IT operations, saving end-users up to 90% of the time and cost, while gaining a valuable global Remote Trusted Advisor. Platform100delivers low-overhead, non-invasive solutions that increase visibility into system performance, improve data gathering, and provide targeted analysis and troubleshooting for SAP systems so that the IT team can become more proactive and responsive which will enable them to have a direct, positive impact on business operations.

Platform100allows a user to run reports automatically on a pre-defined schedule and email them to key team members as well as IT management.

Platform100offers granular level monitoring of the applications in your landscape enabling the end-user to implement highly sophisticated Performance and Service Level Management, complete with true policy-driven automation/remediation, reporting, and integration with the rest of your operational landscape. Platform100allows for highly sophisticated interactive charting, drill downs, and contextual presentation while providing high scalability with the use of modest resources, and provides an easy-to-use, web-based interface for mining and reporting on the historical SAP performance and availability data.

Management as a Service

FIG.1is a graphical depiction of various ways to automate toward smart APM. As can be seen, the graph ofFIG.1illustrates 10 ways: 1. Providing a 360-degree view of the application environments; 2. providing availability and performance monitoring; 3. providing root-cause analysis; 4. providing time-synchronized troubleshooting context; 5. providing service impact awareness; 6. providing automated administrative scripts and jobs; 7. providing self-healing automated recovery; 8. providing digitized complex IT processes; 9. providing synthetic transaction management; and 10. providing dynamic service level management. As explained below, platform100can provide many of not all of these functions.

FIG.2Ais a graphical depiction of a system103for automatic APM that is built around platform100. Platform100can be implemented to monitor one or more customer system110(two customer systems110are shown inFIG.2A). The customer system110can be a complete computer ecosystem. Platform100can seamlessly manage the whole SAP technology stack—from Front-End Services down to Cloud/Virtualization infrastructure: SAP NW (ABAP & Java), BusinessObjects, Hadoop, DBMS (HANA, Oracle, ASE, MaxDB, DB2), SAP Host Agent, Linux, VMWare, Azure, AWS. Platform100can further provide in-depth APM for major SAP Ecosystem Components.

Platform100can be implemented as a cloud-based service without the need to install any monitoring infrastructure within customer systems110, except for a locally installed gateway105. APM can then be delivered by platform100as a full-service model—including monitoring configuration and performance analysis. The hosted service offering minimizes deployment and ongoing maintenance, allowing full spectrum availability and performance management in a matter of hours even for very large and complex environments. The deployment of a small gateway105(proxy-agent) securely within the customer network, combined with best-practice application templates, enables automated and effective application monitoring and management much more efficient.

The gateway105, application and protocol-specific adapters, and the cloud web services APIs are some of the elements of platform100that allow data to be transferred from the monitored systems, e.g., the customer systems110through the gateway105. Each customer (tenant) can have multiple gateways105, depending on the embodiment, e.g., for scalability, multi-location setup such as on-premise and public cloud, network segmentation such as production and non-production, and resilience. Primary and failover configuration can be handled automatically by platform100.

FIG.2Bis a graphical depiction of another embodiment of the system103ofFIG.2Athat illustrated platform100in more detail. As can be seen, platform100can have an object repository101. Platform100can store objects in the repository101based on relational DBMS. The object repository101can be an object-oriented storage (e.g., a memory) that includes the metadata (such as object class definitions) and instance data representing object instance. All data can be expressed through objects of different classes, which includes Systems & Applications, their components, Metric and Log records, etc. Each object instance boils down to a collection of attribute values. The object repository101can include one or more memories (e.g., a database) that stores objects. In this sense, an object can refer to a particular instance of a class, where the object can be a combination of variables, functions, and data structures. Object repository101can provide Object-oriented persistence layer based on relational SQL DB. The repository101can be the main enabler of flexibility within platform100that makes it possible to express complex architectures typical of modern enterprise applications.

Processing Engines102can also be included in platform100. Processing engine(s)102may also be referred to herein as engine102. Only two of the engines102are labeled inFIG.2B. The engines102implement an object space with caching and massively multi-threaded processing. Engines102communicate with each-other directly via UDP based messaging and indirectly through the DB. Engines102load active objects in memory and perform scheduling, which accounts to managing the queues for the objects to temporary acquire java threads and execute the request sent to them.

The active objects implement a wide variety of workloads, which include data-processing such as background aggregation, individual threshold monitoring, event and job scheduling, reporting, notification and running web containers.

Engines102are organized into groups, with some executing background workloads and others running web-containers that handle all external access—Web GUI and Web Services APIs.

The external interfaces are implemented by objects that implement web containers (Jetty) and that are scheduled to run constantly, usually on dedicated EC2 VMs. Both UI and API Web Containers can be implemented using Jetty, but they provide different services—HTML GUI and SOAP/REST APIs respectively (both can be Servlet based).

As noted, platform100can also comprise one or more gateways105. A gateway105is the only component (e.g., software, hardware, firmware) that is installed at a customer premises. This can be a dedicate machine that has access to the internet (e.g., cloud services) and to the local systems to be managed. Gateway105downloads appropriate adapters from platform100in the cloud and uses them to interact (agentlessly) with specific systems under management. No agents or other software installations are required for the managed systems. Gateways105communicate with platform100cloud services using Web Services APIs. A customer can have multiple gateways105for scalability, multi-location setups and resilience (failover), etc.

Platform100can have a plurality of adapters108. Adapters108can include java libraries that allow gateways105to interact with managed systems and applications. A purpose of the adapter108is to translate commands/data between specific system/application type and standard platform100notations.

Infrastructure

Platform100cloud services can be implemented on Amazon Web Services (AWS) infrastructure:All compute (EC2 Instances) is distributed across several Availability Zones for maximum resilience;DBMS is AWS RDS Aurora cluster that also delivers high availability and resilience; E-mail and Text message Notifications are performed using AWS SNS (Simple Notification Services);DNS Load balancing is utilizing AWS Route53 service; andAlthough fully leveraging AWS infrastructure, no proprietary AWS interfaces or APIs are used avoiding AWS lock-in
Implementation Languages and Libraries

All platform100services can be implemented in Java with the exception of the Web UI that includes in-browser JavaScript. In most implementations, platform100does not use any third-party or open source frameworks, all core code is proprietary.

Availability Monitoring

FIG.3is a table showing availability of a system versus system utilization versus time. The two plots shown inFIG.3depict an exemplary availability and performance of an exemplary computer system.FIG.4is a plot of multi-component availability.

Reference is made toFIG.3andFIG.4in the following description. Platform100can output versions of the plots ofFIG.3andFIG.4according to operations and performance of the customer system110. In general, availability of a computer system can be a critical and fundamental requirement for monitoring, yet availability information alone is not useful without a service context as well as relationship to service level objectives (SLO). SLO defines what availability should be (what percentage over time) and how it should be measured (sampling interval and calculation window). Availability of services can be very different from component availability.

For example, an SAP application such as ERP may have uninterrupted availability for end users, yet one or more of its system components such as application servers, message server, enqueue server, and database servers can be down at any given time. If the architecture is deployed with the appropriate high-availability (HA) configuration, then the service may be 100% available while the redundant components can be less than 100%. With proper service monitoring, these can be properly distinguished and managed accordingly.

Platform100can monitor the availability of user-defined Services as well as supporting infrastructure components, which make up the service with a flexible configuration.

Performance Intelligence

The ability to monitor and analyze what happened yesterday, last week or last month about the same time frame/reference is one challenge deserving attention. This requires synchronized data series. Platform100monitors the Performance of services, applications, and IT infrastructure via pre-defined and/or a custom set of KPIs, in time dimensions, which allow not only active service level management, but also back-in-time troubleshooting with correlation, comparisons, and historical snapshots. These features are shown inFIG.4, indicating historical availability statistics.

FIG.5is a plot of a comparison of metrics and timeframes. As shown paltform100can provide comparisons of various metrics and performance indicators (e.g., response time, as shown) on a day over day or even hour over hour basis.

FIG.6is a graphical depiction of an exemplary service grid level report provided by platform100. Some service level reports can be static and after-the-fact which are of little use for troubleshooting and proactive management. Platform100improves this functionality by offering a highly flexible service definition (e.g.,FIG.6) with dependencies such as servers and resource utilization which affect a service. ITC enhances service performance management in the following areas:End-user experience services can track specific sets of key performance indicators for a custom set of metrics, such as user, transactions, locations, dialog vs HTTP, etc.Service discovery of application-aware components and relationshipsComposite services assembled from other services and monitorsEasily configure target availability, response times, and notification if the goals are not metDrill down into services to discover the root-cause of failures
Multi-Dimensional Workload and Transaction Analysis

Platform100has the ability to view performance in an intelligent manner, cross-referencing and changing analytical dimension on whatever views may be of interest to the performance analyst or within the context of time synchronized service data to allow point-in-time and trend analysis across many technical components and application instruments.

The example below shows the relationship between the service and its KPI “service response time”, which comprises of one or more transaction response times. The transaction response times themselves can be further analyzed with components such as DB response times, network time, CPU time, etc. The focus can switch from service performance down to individual sub-components then sort and compare, all within a few clicks.

FIG.7is a graphical depiction of analyzing services alerts. The process shown inFIG.7is representative of platform100capabilities in collecting and analyzing service alert response times, aggregating the associated data and providing analytics for the user. This approach combines the availability monitoring of applications and infrastructure components, together with performance KPIs, events from source system alerts and threshold exceptions. For example, service disruptions trigger alerts, notifications and lead directly to the point of time when the availability was detected. This allows further drill down to locate potential root-causes. Platform100also uses advanced troubleshooting context which automatically time synchronizes various service health components in order to assist in the root-cause determination. Platform100also uses templates to simplify the correlation between complex application components and how they relate as well as impact overall performance and availability. This proves effective at reducing analysis time and which in turn enhances the overall IT service quality.

Dynamic Service Level Management

Platform100can also offer integrated SLM on top of application and system monitoring:Dashboards support operational service level monitoring and compliance.Service Level Agreement & Operational Level Agreement proactively managed for complianceAutomated and flexible report generation and deliveryService desk integration with notifications to ITSM platforms which support webservices API, and charts built in to email notifications which can be further drilled down.

FIG.8is a graphical depiction of a user interface providing intuitive drilldowns on service level KPIs for analyzing system performance.

FIG.9is a graphical representation of a user alert management.

Alerts Management

Most monitoring solutions treat alerts as raw events without much context or relationship. Platform100manages alerts more effectively by using policy-based exceptions where alerts can be filtered, time-synchronized and automatically recovered, including targeted notification to the right analyst reducing mean time to repair (MTTR).

FIG.10is a graphical representation of a user interface for management of SAP job scheduling and monitoring.

Process Automation

Monitoring alone often lacks proactiveness while automation solutions are often expensive, separate unintegrated products. Platform100utilizes a massively parallel processing engine to coordinate complex IT processes across open platforms and applications. SAP Job scheduling and monitoring is an example of this capability, which can extend to full IT Process Automation of Runbooks.

Self-Healing Automated Recovery

Platform100performs policy-based recovery/remediation actions. Platform100leverages automation, which can attempt recovery action upon an alert occurrence that a monitoring policy has been violated. An automated action is initiated to proactively prevent a service disruption as well as auto-closing the alert, if applicable with smart alert management rule. For example, an alert can auto-close if after a set time, the condition which originally raised the alert no longer exists and the status has returned to normal. Monitored thresholds can invoke auto-recovery actions using known fixes for common issues, or simply notify the person responsible to execute those actions.

The recovery action is highly customizable such as specific application commands. Database or shell script can be adapted to each customer and application's need.

Common usage scenarios include:DB archive log backup when the archive filesystem reaches set thresholdRestarting printer queue when the monitored printer status goes offlineRestart SAP qRFC queues when queues are stuck or errors occur

The example below demonstrates how an Oracle filesystem is monitored and when it reaches a warning threshold of 95% full, triggers and alert as well a Recovery process to run a SAP brarchive log backup to save and delete offline archive files. Ultimately, space and recovery RTO/RPO are managed with frequent on-demand log backups.

Operation Processes

Platform100incorporates a built-in scheduler and process composer that can orchestrate application native activities such as SAP jobs, database SQL and stored procedures, Linux/UNIX shell commands and scripts, as well web-services APIs, etc. platform100digitizes both simple and complex IT processes with these goals:Capture of core IT processes which should be recorded in runbooks for documentation or automationComplex environments are non-linear so workflows are best used to capture processes and dependenciesWorkflows should be repeatable, monitored and managed down to the individual task level

Common usage scenarios include:Centralized scripts, replacing local schedulers like crontabHousekeeping jobs in SAP, databases and OSSystem refresh Post-copy Automation (PCA) when used in conjunction with platform100SID-Refresh™ Mass operations such as system startup and shutdown
Synthetic Transaction Management

Platform100can improve the application availability and performance monitoring by integrating test transactions and reports in a coordinated manner across the application landscape as illustrated inFIG.12. Thus, platform100can:Test critical processes on a frequent basis to ensure the availability and performance service levels for them are constantly monitoredWhen possible, simulate end-user experience from various points of entry to the service or application using robots or scripts that can be triggered centrally but executed remotelyBaseline performance during different time periods got trend-analysis and exception-based alertingTransaction-level monitoringIntegration with Performance Load Testing
Reporting

Platform100data can be reported in several ways (illustrated in table1as well):On-demand reports of charts, table, in multiple time intervals and period, which can be delivered as HTML or PDFCSV export of any metric or service hierarchy with flexible time intervals and periodScheduled reports based on XML definitions for the services or KPIReports of pre-defined application such as HANA SQL or SAP mini-check, which can be delivered to a DBA's inbox.

TABLE 1OPTIMIZEMONITORMANAGEAUTOMATETest &Application ServiceIT Service LevelIT ProcessPerformanceRoleManagementMananementAutomationManagementReporting & AnalyticsCIOIT to Business ServiceCompliance ReportingMapping (BSM)on IT KPI, Quality ofServiceBusinessService-CentricService Grid &ServiceAvailability &DashboardsManagerPerformanceKPI reportingManagementIT ManagerApplication-CentricSet coals (thresholds) forScheduled ReportPerformanceSingle Pane of GlassAvailability &Operational & ServiceDeliveryBaseline &uniform managementPerformanceLevel AgreementBenchmarkacrossManagementCapacity PlanningService ImpactLoad-testingAnalysisServicePoilcy-based NotitcationProactive ServiceTrend AnalysisDeskperformance degradation/Support KPI ReportingAnalystoutage notificationService impact visibilitySupport SLA/OLAMonitoringIT OperatorHierarchical Subscription-Hierarchical Subscription-AutomatedGo-Live ValidationIncident Reportingbased Notificationbased NotificationMaintenance(backup etc)IT360 degrees view ofService ImpactSelf-healing:PerformanceTime-synchronizedAdministratorApplication EnvironmentAwarenessAutomatedMonitoringTroubleshootingRoot-Cause AnalysisRoot cause AnalysisRecoverySyntheticContentManage Scripts,TransactionLogs AnalysisBatch Admin JobsPerformanceDigitize ComplexOptimizationIT Processes
Business Value

Platform100provides an integrated scalable cloud platform, there's features and benefits to meet the needs of many IT roles and teams:Performance intelligence for the SAP ecosystem realized through power, speed, and ease of cloud accessImproves IT support staff responsiveness and therefore end-user experienceFlexible definition of scenarios, end-user monitoring, trend analysis, and dynamic reportingHosted offer minimizes deployment and ongoing maintenance costsNo long-term cost commitments
Powerful but Simple to Use

Most tools require extensive training to configure and utilize the tool, others require almost dedicated resource. But platform100is easy to learn and simple to use, yet powerful—thus allowing technical staff to spend more time with other tasks. It assists the user in the analysis and troubleshooting of an issue. It provides a good overview and relationships of all the components of their systems. Platform100's dynamic dashboard gives an important overview and information on, e.g., the SAP systems. Platform100's health overview provides all alerts from your SAP, DBMS, OS and infrastructure.

Unified Monitoring

System monitoring is beyond just event notification and platform100offers a holistic approach to application performance management that encompasses the components within an IT system landscape. The services provided by platform100are highly customizable and increasingly adaptive. With a vibrant R&D team that continuously work on the improvement and addition of useful business functions, the adoption of IT-Conduction is guaranteed to yield the desired business results and ROI. Included in standard SAP ABAP/JAVA/HANA/ASE monitors, platform100can and does monitor OS metrics included by SAP. Additionally, platform100provides an efficient agentless way of monitoring operating system resources like the CPU, Memory utilization, Disk utilization, Paging-in and Paging-out, Physical memory, Allocated memory on Linux/UNIX.

With platform100, you have the option of setting the required threshold values to alert you when there is either a warning or an alarm incident. A visual display of the current OS status, as well as a chronological display of the events that have occurred, can be reported using platform100. Platform100provides you with a data chart depicting a correlation of the individual components of the operating system in such an intuitive form as to enable you to view at a glance the bottlenecks in your system, in relation to dependent applications and database. Platform100's Linux/UNIX automates the monitoring of critical OS processes by name or name patterns. Platform100can monitor printer queues managed by the host lpd facility. Syslog monitor for error messages is supported. Storage utilization by filesystem is readily reported for capacity monitoring.

Platform100's Linux/UNIX monitoring includes the ability to automate SSH jobs, either on-demand or scheduled, in essence replacing the need for local management of cron jobs. Some examples include the ability to kick off database archive log backups to free FS space, or schedule backups via OS scripts, even taking SAPOSCOL snapshots of system configuration or stats.

CONCLUSION

Platform100SaaS platform remotely orchestrates complex IT operations. When applied to the automation of Application Performance Management, enterprise customers have realized savings up to 90% of the time and cost, while gaining a valuable global Remote Trusted Advisor. Platform100delivers low-overhead, non-invasive solutions that increase visibility into system performance, improve data gathering, and provide targeted analysis and troubleshooting for SAP systems so that your IT team can become more proactive and responsive which will enable them to have a direct, positive impact on business operations. Platform100allows you to run reports automatically on a pre-defined schedule and email them to key team members as well as IT management.

To mitigate the great risk of costly system outages, a proven solution and in current use at enterprises of all sizes, platform100is needed to ensure system uptime and optimum system-wide performance. This simplifies the management of large scale SAP landscapes. Platform100offers granular level monitoring of the applications in your landscape enabling you to implement highly sophisticated Performance and Service Level Management, complete with true policy-driven automation/remediation, reporting, and integration with the rest of your operational landscape. Platform100allows for highly sophisticated interactive charting, drill downs, and contextual presentation while providing high scalability with the use of modest resources. Platform100provides an easy-to-use, web-based interface for mining and reporting on the historical SAP performance and availability data.

FIG.11is a functional block diagram illustrating an example wired or wireless system550for use with the system ofFIG.2AandFIG.2Bto provide the functions described in connection withFIG.1andFIG.3throughFIG.10. The system550can be used in connection with various embodiments described in connection with the platform100100, the object repository101, the process engines102, and other aspects of the platform100100described herein. For example the system550can be used as or in conjunction with the platform100100, object repository101, and the process engines102described above, and may represent components of the platform100100, the corresponding backend server(s), load balancers, gateways, adapters108, and/or other devices described herein. The system550can be a server or any conventional personal computer or mobile electronic device (e.g., the mobile device106), or any other processor-enabled device that is capable of wired or wireless data communication. The platform100100and the system550can also take advantage of certain distributed computing methods using one or more distributed processors, such as cloud computing. Other computer systems and/or architectures may be also used, as will be clear to those skilled in the art.

The system550preferably includes one or more processors, such as processor560. Additional processors may be provided, such as an auxiliary processor to manage input/output, an auxiliary processor to perform floating point mathematical operations, a special-purpose microprocessor having an architecture suitable for fast execution of signal processing algorithms (e.g., digital signal processor), a slave processor subordinate to the main processing system (e.g., back-end processor), an additional microprocessor or controller for dual or multiple processor systems, or a coprocessor. Such auxiliary processors may be discrete processors or may be integrated with the processor560. Examples of processors which may be used with system550include, without limitation, the Pentium® processor, Core i7® processor, and Xeon® processor, all of which are available from Intel Corporation of Santa Clara, California.

The processor560is preferably connected to a communication bus555. The communication bus555may include a data channel for facilitating information transfer between storage and other peripheral components of the system550. The communication bus555further may provide a set of signals used for communication with the processor560, including a data bus, address bus, and control bus (not shown). The communication bus555may comprise any standard or non-standard bus architecture such as, for example, bus architectures compliant with industry standard architecture (ISA), extended industry standard architecture (EISA), Micro Channel Architecture (MCA), peripheral component interconnect (PCI) local bus, or standards promulgated by the Institute of Electrical and Electronics Engineers (IEEE) including IEEE 488 general-purpose interface bus (GPM), IEEE 696/S-100, and the like.

System550preferably includes a main memory565and may also include a secondary memory570. The main memory565provides storage of instructions and data for programs executing on the processor560, such as one or more of the functions and/or modules discussed above. The memory565and the memory570can be implemented to perform the functions of the object repository101or other information and data received from the one or more customer systems110, for example. It should be understood that programs stored in the memory and executed by processor560may be written and/or compiled according to any suitable language, including without limitation C/C++, Java, JavaScript, Pearl, Visual Basic, .NET, and the like. The main memory565is typically semiconductor-based memory such as dynamic random access memory (DRAM) and/or static random access memory (SRAM). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (SDRAM), Rambus dynamic random access memory (RDRAM), ferroelectric random access memory (FRAM), and the like, including read only memory (ROM).

The secondary memory570may optionally include an internal memory575and/or a removable medium580, for example a floppy disk drive, a magnetic tape drive, a compact disc (CD) drive, a digital versatile disc (DVD) drive, other optical drive, a flash memory drive, etc. The removable medium580is read from and/or written to in a well-known manner. Removable storage medium580may be, for example, a floppy disk, magnetic tape, CD, DVD, SD card, etc.

The removable storage medium580is a non-transitory computer-readable medium having stored thereon computer executable code (i.e., software) and/or data. The computer software or data stored on the removable storage medium580is read into the system550for execution by the processor560.

In alternative embodiments, secondary memory570may include other similar means for allowing computer programs or other data or instructions to be loaded into the system550. Such means may include, for example, an external storage medium595and an interface590. Examples of external storage medium595may include an external hard disk drive or an external optical drive, or and external magneto-optical drive.

Other examples of secondary memory570may include semiconductor-based memory such as programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), or flash memory (block oriented memory similar to EEPROM). Also included are any other removable storage media580and communication interface590, which allow software and data to be transferred from an external medium595to the system550.

System550may include a communication interface590. The communication interface590allows software and data to be transferred between system550and external devices (e.g. printers), networks, or information sources. For example, computer software or executable code may be transferred to system550from a network server via communication interface590. Examples of communication interface590include a built-in network adapter, network interface card (NIC), Personal Computer Memory Card International Association (PCMCIA) network card, card bus network adapter, wireless network adapter, Universal Serial Bus (USB) network adapter, modem, a network interface card (NIC), a wireless data card, a communications port, an infrared interface, an IEEE 1394 fire-wire, or any other device capable of interfacing system550with a network or another computing device.

Communication interface590preferably implements industry promulgated protocol standards, such as Ethernet IEEE 802 standards, Fiber Channel, digital subscriber line (DSL), asynchronous digital subscriber line (ADSL), frame relay, asynchronous transfer mode (ATM), integrated digital services network (ISDN), personal communications services (PCS), transmission control protocol/Internet protocol (TCP/IP), serial line Internet protocol/point to point protocol (SLIP/PPP), and so on, but may also implement customized or non-standard interface protocols as well.

Software and data transferred via communication interface590are generally in the form of electrical communication signals605. These signals605are preferably provided to communication interface590via a communication channel600. In one embodiment, the communication channel600may be a wired or wireless network, or any variety of other communication links. Communication channel600carries signals605and can be implemented using a variety of wired or wireless communication means including wire or cable, fiber optics, conventional phone line, cellular phone link, wireless data communication link, radio frequency (“RF”) link, or infrared link, just to name a few.

Computer executable code (i.e., computer programs or software) is stored in the main memory565and/or the secondary memory570. Computer programs can also be received via communication interface590and stored in the main memory565and/or the secondary memory570. Such computer programs, when executed, enable the system550to perform the various functions of the present invention as previously described.

In this description, the term “computer readable medium” is used to refer to any non-transitory computer readable storage media used to provide computer executable code (e.g., software and computer programs) to the system550. Examples of these media include main memory565, secondary memory570(including internal memory575, removable medium580, and external storage medium595), and any peripheral device communicatively coupled with communication interface590(including a network information server or other network device). These non-transitory computer readable mediums are means for providing executable code, programming instructions, and software to the system550.

In an embodiment that is implemented using software, the software may be stored on a computer readable medium and loaded into the system550by way of removable medium580, I/O interface585, or communication interface590. In such an embodiment, the software is loaded into the system550in the form of electrical communication signals605. The software, when executed by the processor560, preferably causes the processor560to perform the inventive features and functions previously described herein.

In an embodiment, I/O interface585provides an interface between one or more components of system550and one or more input and/or output devices. Example input devices include, without limitation, keyboards, touch screens or other touch-sensitive devices, biometric sensing devices, computer mice, trackballs, pen-based pointing devices, and the like. Examples of output devices include, without limitation, cathode ray tubes (CRTs), plasma displays, light-emitting diode (LED) displays, liquid crystal displays (LCDs), printers, vacuum florescent displays (VFDs), surface-conduction electron-emitter displays (SEDs), field emission displays (FEDs), and the like.

The system550also includes optional wireless communication components that facilitate wireless communication over a voice and over a data network. The wireless communication components comprise an antenna system610, a radio system615and a baseband system620. In the system550, radio frequency (RF) signals are transmitted and received over the air by the antenna system610under the management of the radio system615.

In one embodiment, the antenna system610may comprise one or more antennae and one or more multiplexors (not shown) that perform a switching function to provide the antenna system610with transmit and receive signal paths. In the receive path, received RF signals can be coupled from a multiplexor to a low noise amplifier (not shown) that amplifies the received RF signal and sends the amplified signal to the radio system615.

In alternative embodiments, the radio system615may comprise one or more radios that are configured to communicate over various frequencies. In one embodiment, the radio system615may combine a demodulator (not shown) and modulator (not shown) in one integrated circuit (IC). The demodulator and modulator can also be separate components. In the incoming path, the demodulator strips away the RF carrier signal leaving a baseband receive audio signal, which is sent from the radio system615to the baseband system620.

If the received signal contains audio information, then baseband system620decodes the signal and converts it to an analog signal. Then the signal is amplified and sent to a speaker. The baseband system620also receives analog audio signals from a microphone. These analog audio signals are converted to digital signals and encoded by the baseband system620. The baseband system620also codes the digital signals for transmission and generates a baseband transmit audio signal that is routed to the modulator portion of the radio system615. The modulator mixes the baseband transmit audio signal with an RF carrier signal generating an RF transmit signal that is routed to the antenna system and may pass through a power amplifier (not shown). The power amplifier amplifies the RF transmit signal and routes it to the antenna system610where the signal is switched to the antenna port for transmission.

The baseband system620is also communicatively coupled with the processor560. The central processing unit560has access to data storage areas565and570. The central processing unit560is preferably configured to execute instructions (i.e., computer programs or software) that can be stored in the memory565or the secondary memory570. Computer programs can also be received from the baseband processor610and stored in the data storage area565or in secondary memory570, or executed upon receipt. Such computer programs, when executed, enable the system550to perform the various functions of the present invention as previously described. For example, data storage areas565may include various software modules (not shown).

Other Aspects

Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. In addition, one embodiment is not necessarily mutually exclusive of another embodiment. Embodiments described herein can be freely combined with one another where combinations of features would not render other feature inoperable for their intended purpose. Thus, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.

Various embodiments may also be implemented primarily in hardware using, for example, components such as application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). Implementation of a hardware state machine capable of performing the functions described herein will also be apparent to those skilled in the relevant art. Various embodiments may also be implemented using a combination of both hardware and software.

Furthermore, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and method steps described in connection with the above described figures and the embodiments disclosed herein can often be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled persons can implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the invention. In addition, the grouping of functions within a module, block, circuit or step is for ease of description. Specific functions or steps can be moved from one module, block or circuit to another without departing from the invention.

Moreover, the various illustrative logical blocks, modules, functions, and methods described in connection with the embodiments disclosed herein can be implemented or performed with a general purpose processor, a digital signal processor (DSP), an ASIC, FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor can be a microprocessor, but in the alternative, the processor can be any processor, controller, microcontroller, or state machine. A processor can also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

Additionally, the steps of a method or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium including a network storage medium. An exemplary storage medium can be coupled to the processor such the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The processor and the storage medium can also reside in an ASIC.

Any of the software components described herein may take a variety of forms. For example, a component may be a stand-alone software package, or it may be a software package incorporated as a “tool” in a larger software product. It may be downloadable from a network, for example, a website, as a stand-alone product or as an add-in package for installation in an existing software application. It may also be available as a client-server software application, as a web-enabled software application, and/or as a mobile application.

While certain embodiments have been described above, it will be understood that the embodiments described are by way of example only. Accordingly, the systems and methods described herein should not be limited based on the described embodiments. Rather, the systems and methods described herein should only be limited in light of the claims that follow when taken in conjunction with the above description and accompanying drawings.