`
`
`
`
`
`
`
`
`UNITED STATES PATENT AND TRADEMARK OFFICE
`
`
`BEFORE THE PATENT TRIAL AND APPEAL BOARD
`
`APPLE INC.
`
`Petitioner,
`
`v.
`
`
`
`
`
`VOIP-PAL.COM, INC.,
`
`Patent Owner
`
`
`
`
`Case No. IPR2016-01201
`U.S. Patent 8,542,815
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DECLARATION IN SUPPORT PATENT OWNER
`RESPONSE TO INTER PARTES PETITION
`
`
`
`
`Voip-Pal Ex. 2016
`IPR2016-01201
`
`Voip-Pal Ex. 2009
`IPR2017-01399
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`I, William Henry Mangione-Smith, declare as follows:
`
`I.
`
`INTRODUCTION
`1.
`
`During the preparation of this Declaration, I have reviewed the
`
`following, as well as the other documents discussed in this Declaration:
`
`a. U.S. Patent No. 8,542,815 (“the ‘815 Patent”) and its file history;
`
`b. U.S. Patent No. 9,179,005 (“the ‘005 Patent”) and its file history;
`
`c. Apple, Inc.’s Petition For Inter Partes Review Of U.S. Patent No.
`
`8,542,815, including attached Declaration Of Henry H. Houh,
`
`PhD;
`
`d. Apple, Inc.’s Petition For Inter Partes Review Of U.S. Patent No.
`
`9,179,005, including attached Declaration Of Henry H. Houh,
`
`PhD;
`
`e. Declaration of Ryan Purita (Ex. 2011);
`
`f. Declaration of Johan Emil Viktor Bjorsell (Ex. 2012);
`
`g. Declaration of Clay Perreault (Ex. 2013);
`
`h. Declaration of David Terry (Ex. 2018);
`
`i. Deposition Transcript of Henry H. Houh, Ph.D. Volumes I and I
`
`(Ex. 2043, 2044)
`
`j. Subversion repository svn.tar file;
`
`k. U.S. Patent No. 7,486,684 to Chu (“the Chu ‘684 Patent”);
`
`-1-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`l. U.S. Patent No. 8,036,366 to Chu (“the Chu ‘366 Patent”);
`
`m. U.S. Patent Publication No. 2007/0064919 to Chen at al. (“the
`
`Chen Patent”).
`
`2.
`
`I have been retained by Voip-PAL.Com Inc. (“Voip-PAL”) as an
`
`expert in the fields of computer science, computer communications, and related
`
`technologies. I am being compensated at my normal consulting rate. My
`
`compensation is not dependent on and in no way affects the substance of my
`
`statements in this Declaration. I have no financial interest in Voip-PAL, in the
`
`‘815 Patent or in the ‘005 Patent.
`
`II. QUALIFICATIONS
`3. My technical background covers most aspects of computer system
`
`design, including low level circuitry, computer architecture, computer networking,
`
`graphics, application software, client-server application, Web technology, and
`
`system software (e.g., operating systems and compilers). I am a member of the
`
`Institute of Electrical and Electronics Engineers and the Association for
`
`Computing Machinery, which are
`
`the
`
`two most significant professional
`
`organizations in my profession. I have been employed as a design engineer,
`
`research engineer, professor and technical expert. Over my professional career I
`
`have been an active inventor with 109 issued U.S. patents, 196 published and
`
`pending U.S. patent applications and many unpublished U.S. patent applications.
`
`-2-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`4.
`
`From 1984 until 1991 I attended the University of Michigan in Ann
`
`Arbor, Michigan. I was awarded the degrees of Bachelor of Science and
`
`Engineering, Master of Science and Engineering, and Doctorate of Philosophy.
`
`My doctoral research focused on high performance computing systems including
`
`computer architecture, applications and operating system software, and compiler
`
`technology. One of my responsibilities during my graduate studies included
`
`teaching senior undergraduate students who were about to enter the profession.
`
`5.
`
`After graduating from the University of Michigan I was employed by
`
`Motorola in Schaumburg, Illinois. While at Motorola, I was part of a team
`
`designing and manufacturing the first commercial battery-powered product capable
`
`of delivering Internet email over a wireless (i.e., radio frequency) link and one of
`
`the first personal digital assistants. I also served as the lead architect on the
`
`second-generation of this device. Part of my responsibilities at Motorola involved
`
`the specification, design, and testing of system control Application-Specific
`
`Integrated Circuits (“ASICs”). I conducted the initial research and advanced
`
`design that resulted in the Motorola M*Core embedded microprocessor. M*Core
`
`was designed to provide the high performance of desktop microprocessors with the
`
`low power of contemporaneous embedded processors. The M*Core received
`
`widespread use in a number of communications products including various
`
`-3-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`telephonic handsets, advanced pagers, and embedded infrastructure. While at
`
`Motorola I was the sole inventor on one U.S. patent.
`
`6.
`
`From 1995 until 2005 I was employed by the University of California
`
`at Los Angeles (“UCLA”) as a professor of Electrical Engineering. I was the
`
`director of the laboratory for Compiler and Architecture Research in Embedded
`
`Systems (“CARES”) and served as the field chair for Embedded Computing
`
`Systems. The CARES research team focused on research, engineering and design
`
`challenges in the context of battery-powered and multi-media mobile computing
`
`devices. One of the key developments of my lab was the Mediabench software
`
`tool, which is widely used to design and evaluate multi-media embedded devices.
`
`Key elements of Mediabench include software that is essential for modern digital
`
`telephony. My primary responsibility, in addition to classroom teaching, involved
`
`directing the research and training of graduate students. I was a tenured member of
`
`the faculty, and had responsibilities for teaching as well as scholarly research.
`
`While at UCLA I was a named inventor on three U.S. patent applications, one of
`
`which issued as a patent. My colleagues at UCLA were some of the leading
`
`scientists and engineers in the world with a long list of innovations from computer
`
`network security devices to the nicotine patch. The graduate student researchers in
`
`my laboratory came from a diverse set of backgrounds, all with undergraduate
`
`degrees in computer engineering, electrical engineering or computer science, many
`
`-4-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`with multiple years of experience working as professional engineers in areas such
`
`as software development, computer system design and ASIC circuit design.
`
`7.
`
`From 2005 until 2009, I was employed at Intellectual Ventures in
`
`Bellevue, Washington. My responsibilities at Intellectual Ventures included
`
`business development, technology assessment, market forecasting, university
`
`outreach, collaborative inventing, intellectual property licensing support, and
`
`intellectual property asset pricing. My colleagues and co-inventors at Intellectual
`
`Ventures included the former lead intellectual property strategist at Intel, Intel’s
`
`lead IP council, Microsoft’s chief software architect, the founder of Microsoft
`
`research, the designer of the Mach operating system, the architect of the U.S.
`
`Defense Department’s Strategic Defense Initiative, the founder of Thinking
`
`Machines (a seminal parallel processing computer system), and Bill Gates. I had
`
`responsibility for hiring and managing over 15 staff members including multiple
`
`Ph.Ds. with degrees in electrical engineering and decades of experience in product
`
`design and engineering.
`
`8.
`
`A brief summary of some of my qualifications for forming the
`
`opinions in this declaration are as follows: I have more than 27 years of experience
`
`as a computer architect, computer system designer, educator, and as an executive
`
`in the PC and electronics business. I am also a member of a number of
`
`professional associations, such as the ACM, IEEE and have been intimately
`
`-5-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`involved in professional research through the International Symposium on
`
`Microarchitecture (Program Chair for 26th and General Chair for 36th), IEEE
`
`Transactions on Computers (Associate Editor), ACM Transactions on Embedded
`
`Computing Systems (Associate Editor), and IEEE Computer (Associate Editor). I
`
`also have been on the program committees for ISCA, MICRO, ISLPED, Network
`
`Processors Workshop, FPL, Complexity-Effective Design, RAW, Workshop on
`
`Mediaprocessors, and DSP, FPT, and INTERACT.
`
`9.
`
`For further details regarding my employment and academic history,
`
`please refer to my curriculum vitae (Ex. 2045).
`
`III. RELEVANT LAW
`10.
`I am not an attorney and I have no formal legal training. For the
`
`purposes of this Declaration, I have been informed about certain aspects of the law
`
`that are relevant to my opinions. My understanding of these aspects is summarized
`
`below.
`
`11.
`
`I have been informed and understand that at the time of invention for
`
`the patents in question the United States employed a principle known as the “first
`
`to invent”. It is my understanding that this principle gives priority to a first
`
`inventor who can convincingly claim to have invented a concept earlier than a
`
`second inventor even if circumstances indicate that the second inventor filed for
`
`patent protection earlier than the first inventor.
`
`-6-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`12.
`
`It is my understanding that an inventor can substantiate a date earlier
`
`than a patent filing date for purpose of priority and prior art by providing
`
`convincing evidence that the inventor had actually reduced the claimed invention
`
`to practice at a date prior to filing for patent protection. It is my understanding that
`
`the phrase “actual reduction to practice” means that the inventor had either
`
`practiced method claims or held in their possession a working artifact that
`
`practiced method or apparatus claims, and that the inventor was aware that the
`
`working artifact worked for its intended purpose.
`
`13.
`
`It is my understanding that with regards to consideration of prior art
`
`for a particular patent U.S.C. 102(e) states:
`
`(e) the invention was described in — (1) an application for patent,
`
`published under section 122(b), by another filed in the United States
`
`before the invention by the applicant for patent or (2) a patent granted
`
`on an application for patent by another filed in the United States
`
`before the invention by the applicant for patent, except that an
`
`international application filed under the treaty defined in section
`
`351(a) shall have the effects for the purposes of this subsection of an
`
`application filed in the United States only if the international
`
`application designated the United States and was published under
`
`Article 21(2) of such treaty in the English language.
`
`-7-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`IV. LEVEL OF ORDINARY SKILL IN THE ART
`14. Based on my review of the ’815 Patent and the ‘005 Patent and my
`
`background and experience in the field of computer science, it is my opinion that
`
`one of ordinary skill in the art as of the priority date would be someone with an
`
`undergraduate degree in either Computer Science, Computer Engineering,
`
`Electrical Engineering, or a closely related discipline. Furthermore, I believe that
`
`such a person would also have 2 years of experience in system-level software
`
`development. In my opinion a greater degree of professional experience could
`
`serve to replace some degree of formal education. I also believe that some greater
`
`degree of formal education could serve to replace some degree of professional
`
`work experience.
`
`15. Based on my education and experience, I am familiar with the level of
`
`knowledge that one of ordinary skill would have possessed during the relevant
`
`period of time. By the priority date of the ‘815 Patent and the ‘005 Patent, I was a
`
`person who had more than ordinary skill in the art.
`
`V. OVERVIEW OF THE ‘815 AND ‘005 PATENTS
`16. The ‘815 and ‘005 Patents disclose a method and apparatus for
`
`routing communications, such as voice calls or video calls, between an internet
`
`network (i.e. a network based on the Internet Protocol, or IP) and a public switched
`
`telephone network (PSTN), and between two endpoints on an IP network. The
`
`-8-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`claimed routing methods and apparatus allow a call to be classified and routed as a
`
`“public network call” or as a “private network call” based on whether at least one
`
`calling attribute and at least a portion of the callee identifier meet certain network
`
`criteria.
`
`17. A key aspect of the claimed inventions disclosed in the ‘815 and ‘005
`
`patent is that they relate to specific calling individuals. The shared written
`
`description and claims make frequent use of the term “caller” and “callee”. The
`
`specification make it apparent that a caller is an individual who initiates a call and
`
`a callee is an individual the caller wishes to communicate with. For example, the
`
`‘815 Patent associates a caller or callee with a user (see for example Fig. 9, 10,
`
`‘815@2:4-7,
`
`‘815@2:48-50,
`
`‘815@2:68-61,
`
`‘815@3:1-2,
`
`‘815@3:40-46,
`
`‘815@15:5-23, ‘815@15:41-61, and ‘815@16:37-51). The detailed description
`
`also makes use of the word “subscriber” to refer to callers, i.e. individuals who
`
`subscribe to the claimed system and can initiate calls to designated callees. Thus,
`
`it is my belief that a person of ordinary skill in the art would understand that the
`
`‘815 and ‘005 patents are directed to individual people (i.e. users or subscribers)
`
`who initiate calls to other individual people.
`
`18.
`
`I have been asked to analyze Claims 1, 7, 27, 28, 34, 54, 72-74, 92, 93
`
`and 111 of the ‘815 Patent. I have also been asked to analyze Claims 1, 24-26, 49,
`
`50, 73-79, 83, 84, 88, 89, 92, 94-96, 98 and 99 of the ‘005 patent.
`
`-9-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`VI. CLAIM CONSTRUCTION ANALYSIS
`19.
`I have been asked to apply the Petitioner’s claim construction in my
`
`analysis for this opinion. While I have accepted these proposed constructions on
`
`their face for purposes of my analysis I have not formed an opinion as to the
`
`correct construction for each term.
`
`VII. SOURCE CODE ANALYSIS
`20.
`I have been asked to analyze version 361 of the RBR software. I have
`
`been provided with a file named “svn.tar”, which contains a Subversion source
`
`code repository. Subversion is a commonly used tool to maintain and record
`
`changes to source code. A source code repository records the history of changes
`
`that are made to each file over time. I have reviewed the Declaration of Ryan
`
`Purita (Ex. 2011) regarding the file named “svn.tar” that he analyzed and I have
`
`confirmed that the file that I received has the same signatures identified in Mr.
`
`Purita’s
`
`declaration
`
`for
`
`the
`
`algorithms
`
`(7c79ec3a4bd14ceaa0f8b8c0d0d3e483),
`
`MD5
`
`SHA1
`
`(87abf73113707e4262c24ffe663afe003742ed2b), CRC32
`
`(954c203e),
`
`and
`
`SHA256
`
`(4dbb53e51e68df305859181e34c1a17349c104190e98008946f2b0de1b577ebc).
`
`MD5 is an algorithm that creates a signature from a data file that is claimed to be
`
`uniquely associated with that file to the same degree as a human fingerprint is to an
`
`-10-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`individual person. CRC32 is like MD5 though not as robust. SHA-1 and SHA-
`
`256 are cryptographic one-way hash functions with no known collisions. Based on
`
`these it is virtually certain that the file I have is identical to the one that was
`
`analyzed by Mr. Purita. I also captured the checksum for all the php source files in
`
`the src directory using the following command from within the source directory:
`
`“cat * | shasum -p -a 256”. This command produced the following output
`
`“214b815b4c8652f1d38d3a8e6c744aa7a28545eaa9fc28ef041737f1120ef9af ?- ”.
`
`21.
`
`I have extracted the Subversion repository from the svn.tar file, and I
`
`then extracted version “361” of the “rbr” directory. I utilized the “tar” and “svn”
`
`utilities that were available on my own computer to perform these functions. The
`
`Subversion repository indicates that Version 361 of the RBR software was last
`
`modified on June 6, 2005 at 09:22:59am.
`
`22. Version 361 of the RBR software consists a number of PHP files that
`
`are run on a server and communicate using an XMLRPC interface. The invite.php
`
`file is the entry point for the messages that are sent from the B2BUA server. The
`
`functions in the invite.php file rely upon functions in the call_routes.class.php file,
`
`which in turn rely upon functions in the call_ttl.class.php file, which in turn uses
`
`code in the call_e164.class.php file. The source code in the call_routes.class.php
`
`file and the call_e164.class.php file also utilizes a configuration file named
`
`-11-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`config.php, a sample of which is provided in the file named config-dist.php in the
`
`same directory.
`
`23.
`
`I have prepared in Ex. 2014 printouts of the files that make up
`
`Version 361 of the RBR software. I have also prepared a log of the files in the
`
`“trunk” directory up through November 2, 2006 in Ex. 2015. The logs were
`
`generated by first updating to the source code as it existed on November 2, 2006
`
`using the “svn update –r 1879” command and then using the “svn log -v”
`
`command from within the trunk directory. This shows the log messages for all
`
`RBR source files within that directory up through November 2, 2006.
`
`24. Based upon my review of the source code provided it is my opinion
`
`that an RBR server running RBR source code Version 361 would implement a call
`
`routing controller, which corresponds to the Routing Controller 16 illustrated in
`
`Fig. 1 of the ‘815 Patent, that received messages when a call was initiated,
`
`processed those messages and responded with a routing message. In the tables
`
`below I have indicated how the RBR server source code maps to certain claims of
`
`the ‘815 Patent.
`
`Patent 8,542,815
`
`1. [1p] A process for
`operating a call routing
`controller to facilitate
`communication between
`callers and callees in a
`system comprising a
`
`RBR Source Code Version 361
`
`The RBR server implements a call routing controller.
`Callers and callees, which may be internet (IP) phones
`or endpoints on the PSTN, are associated with nodes.
`Within a Digifonica supernode, the RBR server
`facilitates communication by responding to requests
`from the B2BUA server and providing routing
`
`-12-
`
`
`
`messages back to the B2BUA server.
`
`
`
`In response to a SIP INVITE message from an IP
`phone, the B2BUA server sends a USER_INVITE
`message to the RBR server.
`
`The inviteClient() function is the entry point for the
`RBR software that receives this message. The
`inviteClient function receives five parameters in an
`XML_RPC_Message (Ex. 2014 at 42, “invite.php” line
`27):
` This function is called by the XML-RPC
`Server expecting type (integer
` * like 4 is THIRD_PARTY_INVITE)
`,username,callee,caller,callid (In that
` * order in the XML_RPC_Message)
`
` *
`
` A
`
` type value of 2 represents a “USER_INVITE”
`message (Ex. 2014 at 42, “invite.php” line 35):
`
`$type_arr[2] = 'USER_INVITE';
`
`Besides the type parameters, the USER_INVITE
`message contains four other parameters identified as
`“username”, “callee”, “caller” and “called” (Ex. 2014
`at 42, “invite.php” lines 44-47):
`
`$username = $params->getParam(1)-
`>scalarval();
`$callee = $params->getParam(2)-
`>scalarval();
`$caller = $params->getParam(3)-
`>scalarval();
`$callid = $params->getParam(4)-
`>scalarval();
`
`The “caller” variable corresponds to the caller identifier
`and the “callee” parameter corresponds to the callee
`
`-13-
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`plurality of nodes with
`which callers and callees
`are associated, the
`process comprising:
`
`[1a] in response to
`initiation of a call by a
`calling subscriber,
`receiving a caller
`identifier and a callee
`identifier;
`
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1b] locating a caller
`dialing profile
`comprising a username
`associated with the caller
`and a plurality of calling
`attributes associated with
`the caller;
`
`
`
`identifier.
`
`The RBR server loads a calling profile using the
`“caller” parameter.
`
`The inviteClient() function first constructs a new
`call_routes() object (Ex. 2014 at 43, “invite.php” line
`60):
`
`$call = new
`call_routes($caller,$caller_domain,$callee,
`$callee_domain,$type,$forced_cid);
`
`The constructor for call_routes() is defined at lines 59-
`74 of call_routes.class.php (Ex. 2014 at 19):
`
`/**
` * Constructor... the class must be called
`with the defined parameters. Callee domain
`is optional and the class will try to guess
`it.
` * Special is a flag (THIRD_PARTY_INVITE)
`when set, the caller is not set and
`concidered a incoming PSTN call.
` *
` * @param String $caller
` * @param String $domain
` * @param String $callee
` * @param String $callee_domain
` * @param String $special
` * @return call_routes
` */
`function
`call_routes($caller,$domain,$callee,$callee
`_domain='',$special='') {
` $this->special_request = $special;
` $this-
`>call_ttl($caller,$domain,$callee,$callee_d
`omain);
` $this->genereate_routes();
`}
`
`The call_routes() constructor calls the call_ttl()
`function (Ex. 2014 at 19, “call_routes.class.php” line
`
`-14-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`72):
`
`$this-
`>call_ttl($caller,$domain,$callee,$callee_d
`omain);
`
`The call_ttl() constructor is defined at lines 131-153 of
`call_ttl.class.php (Ex. 2014 at 27):
`
`/**
` * Class constructor must be initiated with
`at least caller, domain (callee_domain and
`special flag are optional.)<br>
` * Once it is initiated, it will
`automatically execute proper functions and
`do its due diligence, to create TTL.
` * $this->ttl is where you can get the
`Total time to live for this call. can be
`accessed byt extending classes and <br>
` * through the function get_ttl().
` *
` * @param string $caller
` * @param string $domain
` * @param string $callee
` * @param string $callee_domain
` * @param string $special
` * @return call_ttl
` */
`function
`call_ttl($caller,$domain,$callee,$callee_do
`main='',$special='') {
` if(!$callee_domain){
` //try to guess
` if($temp_domain = $this-
`>guess_user_domain($callee)) $this-
`>callee_domain=$temp_domain;
` }
` $this-
`>set_caller_data($caller,$domain,$special);
`
` $this->set_callee($callee,$this-
`>callee_domain);
` $this->generate_ttl();
`}
`
`The call_ttl() function calls the set_caller_data()
`
`-15-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`function (Ex. 2014 at 27, “call_ttl.class.php” line 149):
`
`$this-
`>set_caller_data($caller,$domain,$special);
`
`The set_caller_data() function is defined at lines 187-
`189 of call_ttl.class.php and calls the set_caller()
`function (Ex. 2014 at 28, “call_ttl.class.php” line 188):
`
`$this->set_caller($caller,$domain);
`
`The set_caller() function is defined at lines 325-340 of
`call_e164.class.php (Ex. 2014 at 7):
`
`/**
` * Takes care of sequence of execution to
`create a caller profile
` *
` * @param String $caller
` * @param String $domain
` */
`public function
`set_caller($caller,$domain){
`
` $this->caller = $caller;
`
` if(! ($this->special_request ==
`'THIRD_PARTY_INVITE')){
` $this->caller_domain = $domain;
` $this->create_caller_profile();
` }
` $this->caller_is_set = true;
`}
`
`The set_caller() function calls the
`create_caller_profile() function (Ex. 2014 at 7,
`“call_e164.class.php” line 337):
`
`$this->create_caller_profile();
`
`The create_caller_profile() function is defined at lines
`342-391 of call_e164.class.php (Ex. 2014 at 7-8) (lines
`342-346 shown):
`
`-16-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1c] determining a match
`when at least one of said
`calling attributes matches
`at least a portion of said
`callee identifier;
`
`
`
`
`/**
` * All aspects of the caller Flags and data
`needed to identify a caller is set here.
`including overlapping numbers.
` *
` */
`private function create_caller_profile(){
`
`The create_caller_profile() function queries an SQL
`database to load a caller profile (Ex. 2014 at 7,
`“call_e164.class.php” line 348):
`
`$user_data = mysql_fetch_array($this-
`>sql_query("SELECT * FROM
`subscriber_dialing_profile WHERE
`username='$this->caller' and domain=
`'$this->caller_domain'"));
`
`The data returned from the SQL query include the
`caller’s idd (international direct dial digits), ndd
`(national direct dial digits) and area code (Ex. 2014 at
`7, “call_e164.class.php” lines 350-356):
`
`$this->caller_idd = $user_data['idd'];
`$this->caller_ndd = $user_data['ndd'];
`$this->caller_areacode =
`$user_data['area_code'];
`$this->caller_countrycode =
`$user_data['country_code'];
`$temp =
`explode(",",$user_data['local_length']);
`$this->caller_min_local_length = $temp[0];
`$this->caller_max_local_length = $temp[1];
`
`The RBR server matches attributes in the caller profile
`values against the callee identifier.
`
`The call_ttl() constructor, after calling the
`set_caller_data() function calls the set_callee() function
`(Ex. 2014 at 27, “call_ttl.class.php” line 151):
`
`$this->set_callee($callee,$this-
`>callee_domain);
`
`-17-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`
`The set_callee() function is defined at lines 393-418 of
`call_e164.class.php (Ex. 2014 at 8-9) (lines 393-399
`shown):
`
`/**
` * Takes care of the sequence and logic
`needed to create a callee
` *
` * @param String $callee
` * @param String $callee_domain
` */
`public function
`set_callee($callee,$callee_domain=''){
`
`The set_callee() function calls the
`create_callee_profile() function (Ex. 2014 at 8,
`“call_e164.class.php” line 407):
`
`$this->create_callee_profile();
`
`The create_callee_profile() function is defined at lines
`450-539 of call_e164.class.php (Ex. 2014 at 9-11)
`(lines 450-454 shown):
`
`/**
` * Creates a callee profile, all aspects of
`the callee is set here including the e164
`number is also set here. NOTE: the e164
`number can change when call forwarding
`occures.
` *
` */
`private function create_callee_profile(){
`
`The create_callee_profile() function matches values
`that were previously retrieved as part of the caller
`profile with the callee identifier. For example, a check
`is made to see if the callee identifier begins with the
`international dialing digits (idd) (Ex. 2014 at 9-10,
`“call_e164.class.php” lines 467-476):
`
`case (isset($this->caller_idd) &&
`
`-18-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1d] classifying the call
`as a public network call
`when said match meets
`public network
`classification criteria and
`classifying the call as a
`private network call
`when said match meets
`private network
`classification criteria;
`
`
`preg_match("/^".$this-
`>caller_idd."/",$this->callee)):
`$idd_length = strlen($this->caller_idd);
`$this->set_ml_id($idd_length);
`if($this->callee_data['ml_id']){ //callee
`was found and set
`$this->callee_type = 1;
`$this->check_callee_length($idd_length);
`$this->set_e164_formed_number(substr($this-
`>callee,$idd_length));
`}else{
` throw new Exception(4);
`}
`
`Further, create_callee_profile() checks for matching
`national dialing digits (Ex. 2014 at 10,
`“call_e164.class.php” lines 479-494), checks for
`matching area codes (Ex. 2014 at 10,
`“call_e164.class.php” lines 495-501), checks for a
`matching local number (Ex. 2014 at 10-11,
`“call_e164.class.php” lines 506-513), and checks for a
`network number (Ex. 2014 at 11, “call_e164.class.php”
`lines 520-527).
`
`The RBR server classifies the call as a public network
`call or a private network call.
`
`The create_callee_profile() function classifies the call
`by setting the callee_type variable to a value from 1 to
`7. In the case of a public classification, the callee_type
`variable is set to one of the values 1, 2, 3 or 6 (Ex. 2014
`at 10, “call_e164.class.php” lines 471, 483, 485, 497
`and 510)”
`
`$this->callee_type = 1;
`$this->callee_type = 6;
`$this->callee_type = 2;
`$this->callee_type = 3;
`$this->callee_type = 3;
`
`In the case of a private classification, the callee_type
`variable is set to one of the values 4 or 7 (Ex. 2014 at
`
`-19-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`11, “call_e164.class.php” lines 523 and 525
`respectively):
`
`$this->callee_type = 4;
`$this->callee_type = 7;
`
`The callee_type variable is set to a value of 5 in the
`case of a failure to classify the call (Ex. 2014 at 11,
`“call_e164.class.php” line 529):
`
`$this->callee_type = 5; //fail
`
`The set_callee() function calls the check_for_did()
`function. The check_for_did() function is defined at
`lines 420-441 of call_e164.class.php (Ex. 2014 at 9):
`
`/**
` * Checks if the number being called is a
`mapped DID in our system, if it is we rout
`it internally
` *
` * @param String $user
` * @return Boolean or
`DidMap(DigifonicaNumber#Domain)
` */
`protected function check_for_did($user=''){
`
`$num = $user?$user:$this->callee;
`
`$did_check = @mysql_fetch_array($this-
`>sql_query("SELECT * FROM did_bank WHERE
`did='$num'"));
`
`if($did_check[0]){
`
`
`try{
`
`
`
`if($did_check['mapped_to']
`and $did_check['domain']){
`
`
`
`
`return
`$did_check['mapped_to']."#".$did_check['dom
`ain'];
`
`
`
`}else{
`
`
`
`
`throw new Exception(8);
`
`
`
`}
`
`
`}catch (Exception $e){
`
`
`
`$this-
`>e164_exception_handler($e->getMessage());
`
`
`}
`
`}
`
`-20-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1e] when the call is
`classified as a private
`network call, producing a
`private network routing
`message for receipt by a
`call controller, said
`private network routing
`message identifying an
`address, on the private
`network, associated with
`the callee;
`
`return false;
`
`
`}
`
`The check_for_did() function queries an SQL database
`to determine if the reformatted callee number is
`contained in the “did_bank” table. This check
`determines if the callee is mapped to a Digifonica
`subscriber account. In the case that the check_for_did()
`function returns a value, the set_callee() function will
`make a call to itself at line 415 of call_e164.class.php
`(Ex. 2014 at 8). This will cause a second call to the
`create_callee_profile() function, which will cause the
`callee_type to be changed to 4 or 7 depending on
`whether the destination is associated with the same
`supernode or a different supernode as the caller.
`
`The RBR server produces a private network routing
`message in the case of a private network call
`classification.
`
`The call_routes() constructor, after calling the call_ttl()
`function calls the genereate_routes() function (Ex. 2014
`at 19, “call_routes.class.php” line 73):
`
`$this->genereate_routes();
`
`The genereate_routes() function is defined at lines 91-
`148 of call_routes.class.php (Ex. 2014 at 19-21) (lines
`91-95 shown):
`
`/**
` * Generates the routes and the SIP
`messages including VM data.
` *
` */
`protected function genereate_routes(){
`
`The genereate_routes() function tests the value of
`callee_type and in the case of 4 and 7 sets the routes[]
`array (Ex. 2014 at 20, “call_routes.class.php” line
`146):
`
`-21-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1f] when the call is
`classified as a public
`network call, producing a
`public network routing
`message for receipt by
`the call controller, said
`public network routing
`message identifying a
`gateway to the public
`network.
`
`
`
`/**
` * Generates the routes and the SIP
`messages including VM data.
` *
` */
`protected function genereate_routes(){
`
`The routes[] array is returned to the inviteClient()
`function and stored into a “$response” variable (Ex.
`2014 at 43, “invite.php” line 62):
`
`$response = $call->get_routes();
`
`The inviteClient() function returns the $response
`variable to the B2BUA server over the XML_RPC
`connection (Ex. 2014 at 43, “invite.php, line 70):
`
`return new XML_RPC_Response(new
`XML_RPC_Value($response, "string"));
`
`The RBR server produces such a public network
`routing message in the case of a public network call
`classification.
`
`The genereate_routes() function tests the value of
`callee_type and in the case of 1, 2, 3 or 6 queries an
`SQL database to get ‘supplier’ addresses (Ex. 2014 at
`19, “call_routes.class.php” line 99):
`
`$routes_q = $this->sql_query("SELECT * FROM
`suppliers WHERE ml_id=".$this-
`>callee_data['ml_id']." ORDER BY sup_price
`ASC");
`
`The genereate_routes() function then processes the
`results from the SQL query and builds a routes[] array
`(Ex. 2014 at 20, “call_routes.class.php” line 133):
`
`$this->routes[] = $c."h323-ivr-in =
`'Routing:".$my_routes_info[$curr_route]['pr
`epend'].$my_routes_info[$curr_route]['ndd_i
`
`-22-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`7. The process of claim 1
`further comprising
`formatting said callee
`identifier into a pre-
`defined digit format