/** * Forms PDU. * @access public * @param int $cmd Command id * @param array $pars Parameters * @return string PDU */ public function form_pdu($cmd, $pars = array()) { $pdu = null; switch ($cmd) { case BIND_TX: case BIND_RX: $pdu = pack('a' . (strlen($this->login) + 1) . 'a' . (strlen($this->pass) + 1) . 'a' . (strlen($this->system_type) + 1) . 'CCCa' . (strlen($this->address_range) + 1), $this->login, $this->pass, $this->system_type, 0x34, $this->addr_ton, $this->addr_npi, $this->address_range); $this->sqn++; break; case SUBMIT_SM: $pdu = pack('a' . (strlen($pars['stype']) + 1) . 'CCa' . (strlen($pars['src']) + 1) . 'CCa' . (strlen($pars['dst']) + 1) . 'CCCa' . (strlen($pars['sdt']) + 1) . 'a' . (strlen($pars['valid']) + 1) . 'CCCCC', $pars['stype'], $pars['st'], $pars['sn'], $pars['src'], $pars['dt'], $pars['dn'], $pars['dst'], $pars['esm'], $pars['proto'], $pars['prior'], $pars['sdt'], $pars['valid'], $pars['deliv'], $pars['repl'], $pars['dc'], $pars['msgid'], strlen($pars['text'])) . $pars['text']; break; case ENQUIRELINK: case UNBIND: $this->sqn++; break; case DELIVER_SM | ACK: $pdu = pack('a2', '0'); break; } if (isset($pars['sqn'])) { $sqn = $pars['sqn']; } else { $sqn = $this->sqn; } return NIMF_esme::form_pdu_header($cmd, strlen($pdu), $sqn) . $pdu; }