Recruiters and human resources personnel are often inundated with numerous job applicants or candidates for an open position. Recruiters may spend, for example, forty hours just screening or narrowing down an initial pool of job candidates to identify a subset of candidates to be interviewed. During the screening process, many of the candidates may be removed from the initial pool of candidates for not meeting qualifications or requirements for the position, such as a minimum level of experience or education, or for other reasons such as not being willing to travel or relocate, or expecting a higher salary.
Although recent advancements have allowed for electronically searching candidate resumes or applications, such automated searching may miss other relevant terms and fail to provide more detailed, current, or relevant information about candidates during the screening process. In some cases, search terms found in a candidate's resume or job application may be taken out of context and may not be relevant. For example, a resume may mention a particular skill, but the candidate may not have practiced the skill in many years. In other cases, information about a promising candidate may be missed because of the inability to recognize variations of a particular search term or the inability to ask follow up questions during the initial screening process, especially when screening a large number of job candidates.
The features and advantages of the embodiments of the present disclosure will become more apparent from the detailed description set forth below when taken in conjunction with the drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the disclosure and not to limit the scope of what is claimed.
In the following detailed description, numerous specific details are set forth to provide a full understanding of the present disclosure. It will be apparent, however, to one of ordinary skill in the art that the various embodiments disclosed may be practiced without some of these specific details. In other instances, well-known structures and techniques have not been shown in detail to avoid unnecessarily obscuring the various embodiments.
Server 102 includes processor 110, network interface 112, and memory 114. In the implementation of
Network interface 112 can include one or more network interface cards to allow server 102 to communicate on network 104 using a standard such as Ethernet and/or Fibre Channel. In some implementations, network interface 112 may be combined with processor 110.
Memory 114 can include one or more non-volatile storage devices such as, for example, one or more hard disk drives and/or solid state drives. In addition, memory 114 can include a random access memory such as Dynamic Random Access Memory (DRAM) or a non-volatile random access memory for temporarily storing data to be used by processor 110, such as instructions loaded from a non-volatile memory of memory 114 for execution by processor 110 as needed. In some implementations, such random access memory may be combined with processor 110.
As shown in
Application 14 can include various modules for building a job description, building a virtual interview, managing a hiring campaign, interviewing a job candidate, and analyzing and ranking job candidates based on their interviews. An example implementation of application 14 is discussed in more detail below with reference to
In the example environment of
Memory 120 of client device 106 stores web application 16, which can be used to serve a web page to candidate devices 1081, 1082, and 1083 and execute interview interface 17. In this regard, interview interface 17 may activate when web browser 18 or a messaging application (e.g., a texting application or Facebook's messenger application) executing on candidate device 1081 accesses the web page via a hyperlink including a unique run identifier.
Candidate devices 1081, 1082, and 1083 can include a personal computer or a portable electronic device operated by one or more job candidates, such as a laptop, tablet, or smartphone, for example. In the example of
Network interface 122 of candidate device 1081 can include a network interface card or other circuitry to allow candidate device 1081 to communicate on network 104 using a standard such as Ethernet and/or WiFi. In some implementations, network interface 122 may be combined with processor 124.
Processor 124 of candidate device 1081 can include circuitry such as one or more processors or a Central Processing Unit (CPU) for executing instructions and can include a processor, microcontroller, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), hard-wired logic, analog circuitry and/or a combination thereof. In some implementations, processor 124 can include a System on a Chip (SoC) that may combine the circuitry of processor 124 with network interface 122 and/or memory 126.
Memory 126 of candidate device 1081 can include one or more non-volatile storage devices such as, for example, a hard disk drive or a solid-state drive. In addition, memory 126 can include a random access memory such as Dynamic Random Access Memory (DRAM) or a non-volatile random access memory for temporarily storing data to be used by processor 124, such as instructions loaded from a non-volatile memory of memory 124 for execution by processor 126 as needed. In some implementations, such random-access memory may be combined with processor 124.
As will be appreciated by those of ordinary skill in the art, other embodiments may include a different arrangement of components than those shown in the example of
Job description 20 can include text provided by, for example, a recruiter or a hiring manager via a user interface of application 14 to describe an open position for the hiring campaign. An example of a job description can include, for example, job responsibilities and related tasks, background information on the employer, compensation offered, and/or required or preferred qualifications. An example of a portion of a job description is shown in
Returning to
The matching may be performed using Artificial Intelligence (AI) such as Natural Language Processing (NLP) and/or Machine Learning (ML) to better identify terms in the candidate profiles and resumes that relate or correspond to job description keywords 22. In the case of NLP, processor 110 may use string processing, part-of-speech tagging, parsing, string classification, semantic interpretation, evaluation metrics, and/or probability estimation to identify likely word form variations, alternative vocabulary, and/or misspellings in the candidate profiles and resumes. In the case of ML, processor 110 can use previous searches for the same or similar job description keywords from the same and/or other campaigns to train the NLP to identify new word form variations, new alternative vocabulary, and/or new misspellings in the candidate profiles and resumes.
By using AI to match candidate provided information with job description keywords, it is ordinarily possible to better identify candidates that are worth interviewing. In addition, NLP and/or ML can also be used by processor 110 to suggest or generate job description keywords to be used when initially searching candidate data 12 for job candidates to interview.
Candidate selection criteria 24 includes criteria defined by a user (e.g., a recruiter or hiring manager) via a user interface of application 14 for selecting candidates to interview. Such criteria may include, for example, parameters such as a number or percentage of candidates to virtually interview using server 102, such as twenty candidates with the most matches to job description keywords in their candidate profiles and/or resumes. Other examples of candidate selection criteria 24 can include criteria such as a minimum level of experience, a minimum education level, or a certification requirement. As discussed below in more detail with the example user interface of
Selected candidates 26 can include a list of candidates who have been selected for being virtually interviewed by server 102 based on their ranking in matching job description keywords 22 and the candidate selection criteria 24. In some implementations, selected candidates 26 may be manually selected by a user (e.g., a recruiter or hiring manager) via a user interface of application 14. In this regard, selected candidates 26 may be a subset of matching candidates identified by processor 110 based on the matching of job description keywords 22 to terms found in candidate profiles and/or resumes.
Interview 28 can include question nodes and statement nodes defined or arranged by a user during a virtual interview building process, such as the example process of
Campaign rankings 30 can include a dynamic representation of scores and/or a ranking of a job candidate relative to other job candidates selected for campaign n. As discussed in more detail below, an analytic and ranking module of application 14 (e.g., analytic and ranking module 58 in
Nodes 32 can include questions and/or statements created by a user (e.g., a recruiter or hiring manager) via a user interface of application 14 during a virtual interview creation process. As described in more detail below with reference to
Question keywords 34 can include keywords associated with questions of nodes 32. Question keywords 34 may be manually added by a user (e.g., a recruiter of hiring manager) via a user interface for the virtual interview builder module and/or processor 110 may automatically suggest question keywords to be associated with a question using ML to analyze a plurality of previous responses and at least one previous question keyword stored in campaign data 10. The plurality of previous responses may be received from different job candidates in response to one or more previous similar questions not included in interview 28. The use of ML to suggest or generate question keywords can ordinarily allow for a more robust set of question keywords 34 to better match question keywords to job candidate responses. This in turn can make the virtual interview process more useful and help reduce instances of failing to account for an otherwise relevant or significant candidate response.
Question weights 36 include weight values assigned by a user via a user interface of application 14 to the questions included in interview 28. This can ordinarily allow for customization during the virtual interview building process to place more emphasis on certain questions over others. As discussed in more detail below with reference to the virtual interview process of
In some implementations, certain questions may be assigned a question weight of zero so that the response to the question does not contribute to a score for the job candidate. Questions with a zero question weight may include, for example, whether the job candidate's contact information has changed or questions that may be used to lead to a more focused question that is assigned a non-zero weight.
Keyword weights 38 include weight values assigned by a user via a user interface of application 14 to question keywords 34. This can ordinarily allow for further customization during the virtual interview building process to provide more credit or weight to certain responses over others. This additional granularity in the scoring of individual responses can ordinarily provide a more thorough and meaningful comparison of job candidates during the screening process as compared to a more binary scoring of responses.
As discussed in more detail below with reference to the virtual interview process of
Tree structure 40 includes an arrangement of nodes 32 representing an order for presenting questions and statements to the job candidate via an interview interface. A user may determine the order for tree structure 40 via a user interface for a virtual interview builder module of application 14. An example of such a tree structure is shown in the virtual interview builder user interface example of
Candidate scores 42 can include can include individual scores for particular responses provided by the job candidate and an overall current score for the job candidate based on multiple scores for different questions. In one implementation, the overall score for a job candidate can be calculated by processor 110 using an analytics and ranking module of application 14. A score for a candidate response may be calculated in real-time during a virtual interview session before sending a next question or a next statement to client device 106 or candidate device 108 by multiplying a question weight times a total keyword weight for the job candidate's response. The total keyword weight can, for example, include a summation of individual keyword weights for question keywords 34 found to match or approximately match terms found in the job candidate's response.
Responses 44 include responses collected from the job candidate during one or more virtual interview sessions. In this regard, responses 44 may be from a single hiring campaign or from multiple hiring campaigns. In some implementations, responses for multiple job candidates can be used by ML algorithms of application 14 to identify patterns or variations of question keywords in job candidate responses to improve the ability of application 14 to suggest related question keywords in the interview builder module or to identify terms substantially related to a question keyword in a job candidate response during a virtual interview.
Resumes 46 include one or more resumes submitted by the job candidate. In this regard, resumes 46 may include different versions of resumes submitted by the job candidate in applying for different open positions or hiring campaigns. This can ordinarily provide a more thorough initial screening of a large candidate pool for various hiring campaigns, such as when attempting to find job description keywords in job candidate resumes.
Candidate profiles 48 can include information submitted by a job candidate when applying for a position or in managing their profile via candidate device 108. For example, candidate profile 48 may include information such as contact information or basic information about the candidate such as an industry or a residence location that the job candidate may have provided via a user interface of application 14.
In operation, job description builder module 50 receives a job description input via a user interface. The job description input is used to form job description 20 stored in campaign data 10, as discussed above with reference to
Job description builder module 50 can extract and/or derives job description keywords 22 from the job description input. In some implementations, job description builder module 50 may dynamically extract job description keywords as the job description input is received via the user interface, and present the job description keywords to a client device for selection by a user. The creation of job description keywords may involve matching a predetermined list of job description keywords stored in memory 114 to the job description input. In some implementations, job description builder module 50 may use NLP and/or ML to suggest variations or related job description keywords derived from the job description input and candidate pool filtering in previous campaigns using the same or similar job descriptions or job description keywords. An example of suggested job description keywords is shown in
Returning to
Campaign manager module 52 may dynamically track or update a keyword count indicating a number of matching and/or related terms found for different job candidates. In addition, campaign manager module 52 receives candidate selection criteria input via a user interface to allow for the filtering of a pool of job candidates. The candidate selection criteria input is stored as candidate selection criteria 24 in campaign data 10.
The matching and filtering performed by campaign manager module 52 may be enhanced in some implementations by allowing a user to create tags in addition to job description keywords 22 that campaign manager module 52 can use to perform further filtering of job candidates. An example of a user interface for campaign manager module 52 is provided in
Returning to
In some implementations, interview builder module 54 may use NLP and ML to suggest variations or related question keywords. The ML may be trained from previous campaigns and interview questions using the same or similar question keywords and their associated job candidate responses (e.g., responses 44) to automatically populate suggested question keywords for a question node in the user interface for interview builder module 54. In addition, the user interface for interview builder module 54 can allow for the arrangement of questions and statements into a tree structure representing an order for sending questions to client device 106 or a candidate device 108 with different paths depending on the responses to the questions. An example of such a tree structure is provided in
Returning to
Virtual interview module 56 may send an interview hyperlink via network interface 112. In some implementations, the interview hyperlink may include a run identifier for activating interview interface 17 on client device 106. In such implementations, the interview hyperlink may point to a web page (e.g., a virtual interview landing page) served by client device 106 using web application 16. Client device 106 may then activate interview interface 17 in response to a candidate device 108 accessing the web page via web browser 18.
After server 102 receives an indication from client device 106 that interview interface 17 has been activated, virtual interview module 56 proceeds with sending questions and statements to client device 106 following tree structure 40 for access by candidate device 108. In this regard, interview interface 17 can include a client interface enabling a dialog between server 102 and candidate device 108. Interview interface 17 may include, for example, a chatbot interface to provide a virtual interview where questions and statements are asked, the order of which depends on a real-time evaluation of responses from the job candidate.
In addition, virtual interface module 56 passes responses received from client device 106 (or candidate device 108 in implementations where interview interface 17 runs on candidate device 108) one at a time as they are received to analytic and ranking module 58 for real-time evaluation and scoring of the responses before sending a next question or statement. This real-time scoring and evaluation of responses can ordinarily allow for a more dynamic virtual interview process by selecting a proper path in tree structure 40 for follow up or more focused questions. In addition, the real-time evaluation and scoring of responses allows for a more current view or ranking of candidates that can be viewed by a user, such as a recruiter or hiring manager. For example, in some cases, a job candidate may only partially complete a virtual interview and may return to the virtual interview at a later time. A recruiter in such a scenario may still view a current ranking of candidates selected for virtual interviews including the scoring of the responses of a partially completed virtual interview or for interview that is in progress.
In evaluating job candidate responses, analytic and ranking module 58 accesses question keywords 34 to find keywords for the question that match the response. Analytic and ranking module 58 can use an AI engine including NLP and/or ML to better match question keywords used for scoring to a job candidate response. For example, analytic and ranking module 58 may match a question keyword to a response using NLP by identifying a variation of the question keyword or a term related to the question keyword in the response. Such keyword variations or related terms can include, for example, keyword misspellings, word form variations, or alternative vocabulary. Analytic and ranking module 58 may also use special character search strings (e.g., account*) for begins with, ends with, and contains when matching question keywords to responses. In addition, new keyword variations and new related terms may be added by analytics and ranking module 58 based on the evaluation of previous responses from different job candidates for previous campaigns and/or the current campaign. The ML may be trained using the same or similar question keywords and their corresponding job candidate responses.
Analytic and ranking module 58 provides campaign manager 52 with candidate scores and rankings for the job candidates for inclusion with candidate rankings 30 for the campaign. Analytic and ranking module 58 may provide an overall score or a current running score for a job candidate based on the scoring of individual responses. The scoring of individual responses may also be stored as responses 44 as part of candidate data 12. In other implementations, the scores for each response may also or alternatively be stored as part of campaign data 10.
Campaign manager module 52 may also allow a user to dynamically search and filter the selected candidates by rank or by more specific parameters, such as by finding all candidates who matched a particular question keyword for a question.
In block 204, processor 110 receives candidate selection criteria. The candidate selection criteria can include criteria defined by a user (e.g., a recruiter or hiring manager) for selecting candidates to interview as part of the screening process. Such criteria may include, for example, a final number of candidates to interview during the screening process, a minimum level of experience, a minimum education level, or a required certification.
In block 206, processor 110 creates job description keywords 22 based on the job description input received in block 202. Job description keywords 22 can include particular portions or related terms of job description 20 that can be used to identify selected candidates 26.
In block 208, processor 110 using campaign manager module 52 parses candidate profiles 48 and/or resumes 46 included in candidate data 12 to match job description keywords 22 with text included in the candidate profiles 28 and/or resumes 44. In some implementations, the matched text from candidate resumes may be stored as candidate keywords as part of candidate profiles 28. The parsing or searching in block 208 may allow for the identification of job candidates who may not have applied for the particular job to be filled by the hiring campaign since previously submitted candidate profiles and/or resumes can be searched or parsed for matching job description keywords.
As noted above, the matching may be performed using NLP and/or ML to better identify terms in the candidate profiles or resumes that relate to or correspond to job description keywords 22. By using AI to match candidate provided information with job description keywords, it is ordinarily possible to better identify promising job candidates to virtually interview.
In block 210, processor 110 ranks candidates based on terms in the candidate's respective candidate profiles and/or resumes corresponding to job description keywords 22. The ranking may, for example, be performed by comparing a total number of matching job description keywords for a job candidate to other job candidates.
In block 212, processor 110 selects candidates for a virtual interview based on the ranking performed in block 210 and the candidate selection criteria received in block 204.
Filtering controls 309 can include various filters such as job types, industries, experience, keywords, and tags that can be entered or adjusted by a user to enhance dynamic filtering. In some implementations, the filters can include different types of filters, such as an exclusion filter type or a ranking only filter type. For example, an exclusion filter type may be used to exclude job candidates based on job type or industry, and a ranking filter type may be used to filter candidates based on scores for experience, keywords, and tags.
In the example of
User interface 302 can allow a user to review the list of matching candidates 306 and select candidates to virtually interview, which are then added to selected candidates 308. User interface 302 also allows for the removal of selected candidates.
The predetermined set of question types may include, for example, a yes/no Boolean question type, a single response question type, a multiple response question type, a ranking question type, and a free-form text response question type. In addition, certain predetermined statement types may also be included as part of interview builder module 54, such as an introductory statement or a closing statement for the virtual interview.
In block 216, processor 110 assigns a weight to each question created in block 214. For example, a user of computer system 106 may set a value to a particular question using an interface of interview builder module 54 (e.g., interface 350 in
In block 218, processor 110 determines one or more suggested question keywords to associate with a question using ML trained by a plurality of previous responses and at least one previous question keyword. In some implementations, interview builder module 54 may use NLP in addition to ML to suggest variations or related question keywords in a user interface of interview builder module 54. The ML may be trained from previous campaigns and interview questions using the same or similar question keywords and their associated job candidate responses (e.g., responses 44) to automatically prepopulate suggested question keywords for a question node in the interview builder user interface.
In block 220, processor 110 associates one or more question keywords with each of the plurality of questions created in block 214. The association of question keywords to particular questions may be in response to the selection of suggested keywords or the entering of question keywords by a user in the user interface for interview builder module 54. The associated keywords are stored by processor 110 as question keywords 34 in memory 114.
In block 222, processor 110 assigns a keyword weight to each of the one or more question keywords 34. The weights assigned to question keywords 34 may be in response to input received via the user interface for interview builder module 54. An example of such keyword weighting is shown in user interface 350 of
In block 224, processor 110 arranges the plurality of questions as nodes in a tree structure representing an order for sending the plurality of questions during the virtual interview. The user interface for interview builder module 54 can allow for the arrangement of questions and statements into the tree structure with different paths depending on the responses to the questions. An example representation of such a tree structure is provided in
Question nodes 314, 326, and 336 provide examples of a single response question type. Question nodes 320 and 330 are examples of free-form text response question types that provide for a free-form text field for entering a response. As shown in
In the example of
Certain nodes such as statement node 340 may also trigger an action performed by virtual interview module 56, such as uploading a file (e.g., a resume) to server 102. After the final statement node 344, the interview interface proceeds to exit at node 348.
The question weight 366 can be set or adjusted in the example of
User interface 350 also provides checkboxes 361, 363, 360, and 358 for different response options. Checkbox 361 can allow for candidate keywords to be extracted or derived from job candidate responses to the question when evaluating the response. Such candidate keywords may be added to a candidate profile 48 stored in memory 114 to collect additional or updated information about a job candidate. In extracting or deriving candidate keywords, analytic and ranking module 58 may use NLP and/or ML to associate relevance to different terms included in the response.
Checkbox 363 provides for a user to enter a hint to the question to help direct a job candidate to provide a more useful response. The selection of checkbox 363 may then allow for a hint on the intent of the question and expected response type, which is displayed below a text box during the virtual interview.
Checkbox 360 provides an option for the evaluation of the response to participate in statistics generated by campaign manager module 52. Such statistics may include, for example, the percentage of job candidates who answered with a certain response for the question. Checkbox 358 further provides for a graph to be displayed by campaign manager module 52 when reviewing results for the question. With reference to the example of
User interface 350 of
In addition, alternative keywords (e.g., alternative keyword 376) can be added to improve the matching of question keywords to responses. The alternative keywords can be manually added by a user under another keyword such as where alternative keyword 376 for “Ruby on Rails” has been added under the “Ruby” question keyword. Analytic and ranking module 58 can then treat the alternative keyword as an instance of the question keyword when evaluating and scoring responses.
Alternative keywords may also be added by using the suggested keyword tool 374. Analytic and ranking module 58 can be used to suggest alternative keywords based on a question keyword 370. In this regard, processor 110 may execute an AI engine to identify alternative keywords by analyzing a plurality of previous responses and at least one previous question keyword stored in campaign data 10 for a different campaign. The plurality of previous responses may be received from different job candidates in response to one or more previous questions not included in interview 28. The use of ML to suggest or generate question keywords can ordinarily allow for a better and more robust matching of job candidate responses to a question.
In block 230, processor 110 receives an indication that interview interface 17 has been activated by a client device (e.g., client device 106 or a candidate device 108). In some implementations, the interview interface can include a client interface such as a chatbot for enabling a dialog between server 102 and a job candidate operating candidate device 108.
In block 232, processor 110 sends a question included in interview 28 to the client device for access by the job candidate via the interview interface. In most cases, the first question in tree structure 40 will be preceded by an initial statement greeting the job candidate. In more detail, processor 110 sends instructions (e.g., via Javascript) to the client device to display the question via the interview interface, which may be accessed by an application (e.g., web browser 18 in
For example,
In Block 250 of
Returning to block 234 in the virtual interview process of
As discussed above, each response can be evaluated using analytic and ranking module 58 in real-time as the responses are received during the virtual interview. In this regard, blocks 238 and 240 in
In block 238, processor 110 matches one or more question keywords to the response received in block 234. Analytic and ranking module 58 may use NLP and ML in matching question keywords 34 to the response to evaluate the responses in context based on likely meanings inferred by an AI engine used by analytic and ranking module 58. In addition, the use of NLP can improve the matching of question keywords to responses by identifying alternative spellings, alternative vocabulary, and misspellings.
In block 240, processor 110 calculates a score for the received response based on a question weight (e.g., from question weights 36 in
In block 242, processor 110 stores the score calculated in block 240 for the response in memory 114. The score for the response may be stored, for example, as part of candidate scores 42 in
In block 244, if it is determined that the last question in a branch of the tree structure for the virtual interview has been reached, the process of
In cases where there is only one path from the current question node, block 248 may be omitted or the next question in the branch is automatically selected.
The virtual interview process of
In the example interface of
In addition, some implementations of the interview interface dynamically use NLP and/or ML as text is entered into free-form text field 384. Interview interface 378 may then highlight or otherwise change the color of a button of buttons 382 that most likely corresponds to the text entered by the job candidate. This visual indication can provide the job candidate a sense of which question keyword their response will be associated with before their response is submitted by pressing send button 386.
In block 256, processor 110 calculates an overall score for a job candidate based on a plurality of scores for a plurality of responses from the job candidate. The overall score may be based on question weights and keyword weights associated with question keywords determined to match the responses.
In block 258, processor 110 ranks the job candidate relative to other job candidates based on the overall score calculated in block 256. This information may be presented to a user in a user interface of campaign manager module 52 or analytic and ranking module 58.
Graphs 394 in
Candidates 396 can include a list of selected candidates for the virtual interview. This list can be searchable and may also be used in some implementations to link to more information about the candidate, such as how they answered a particular question or their exact response, as stored during a virtual interview. These tools can ordinarily allow a user of client device 106 to easily review a current campaign while it is in progress and quickly retrieve more detailed information about a candidate as needed.
In addition, and as described above, the use of NLP and ML can make the screening process more accurate, useful, and robust by providing better matching of question keywords to responses on a question by question basis. Moreover, the virtual interview processes described above ordinarily allow for a more dynamic and up-to-date screening of job candidates that can elicit more information than a search of static information (e.g., resumes and job applications). The virtual interview processes described above are also scalable in the sense that additional job candidates can be interviewed without costing a recruiter or hiring manager additional time.
Those of ordinary skill in the art will appreciate that the various illustrative logical blocks, modules, and processes described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. Furthermore, the foregoing processes can be embodied on a computer readable medium which causes a processor or computer to perform or execute certain functions.
To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, and modules 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. Those of ordinary skill in the art may 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 present disclosure.
The various illustrative logical blocks, units, modules, and controllers described in connection with the examples disclosed herein may be implemented or performed with a general purpose processor, a DSP, an ASIC, a 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 may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., 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.
The activities of a method or process described in connection with the examples disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. The steps of the method or algorithm may also be performed in an alternate order from those provided in the examples. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable media, an optical media, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an Application Specific Integrated Circuit (ASIC).
The foregoing description of the disclosed example embodiments is provided to enable any person of ordinary skill in the art to make or use the embodiments in the present disclosure. Various modifications to these examples will be readily apparent to those of ordinary skill in the art, and the principles disclosed herein may be applied to other examples without departing from the spirit or scope of the present disclosure. The described embodiments are to be considered in all respects only as illustrative and not restrictive and the scope of the disclosure is, therefore, indicated by the following claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.