throbber

`
`
`
`
`
`
`
`
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket