1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#!/bin/bash
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#       http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd#  limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd###################################################################
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd## Script that generates SMS and MMS messages and fills the Android
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd## telephony provider mmssms.db. This is used for testing SMS/MMS.
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd###################################################################
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddAREA_CODE=605
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddTABLE_CANONICAL_ADDRESSES_START_ID=100
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddTABLE_THREADS_START_ID=100
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddTABLE_SMS_START_ID=1000
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddSTART_TIMESTAMP_IN_SECONDS=1357683093 # 1/8/2013 2:11:33 PM
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddTIMESTAMP_INC_IN_SECONDS=120
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddPART_DIR="/data/data/com.android.providers.telephony/app_parts"
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddUSAGE='fillsms [-f] [-x] <device_phone_number> <# of threads> <# of sms per thread> <# of mms per thread> <image list file> <sql file>
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -f -- Only generates the SQL file, do not push to the device
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -x -- Only execute a SQL file
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -g -- For GB devices
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddExamples:
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Generate 2 threads each with 10 SMSes and 10 MMSes on device with phone
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # number +16508619525. MMS messages use images listed in ./images, which list
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # *.jpg and *.gif files in local directory. The SQL commands are in sql.txt
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    fillsms +16508619525 2 10 10 images sql.txt
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Same as above but only creating the SQL command file without pushing to
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # device
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    fillsms -f +16508619525 2 10 10 images sql.txt
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Just push the sql.txt to device without generating new SQLs
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    fillsms -x +16508619525 2 10 10 images sql.txt
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd'
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddSMIL='<smil> <head> <layout> <root-layout height="%dpx" width="%dpx"> <region fit="meet" height="%dpx" id="Image" left="0" top="0" width="%dpx"/></root-layout> </layout> </head> <body> <par dur="5000ms"> <img region="Image" src="%s"/> </par> </body> </smil>'
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddMAX_WORDS_PER_MESSAGE=15
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike DoddDICT=american-english
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd# don't actually run the sql on device
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddopt_sql_only=0
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddopt_exec_only=0
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddopt_for_gb=0
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddwhile test $# -gt 0
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddo
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  case $1 in
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -f)
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      opt_sql_only=1
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      shift
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      ;;
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -x)
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      opt_exec_only=1
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      shift
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      ;;
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    -g)
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      opt_for_gb=1
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      shift
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      ;;
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    *)
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      break;
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  esac
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddone
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddif [ $opt_sql_only -eq "1" -a $opt_exec_only -eq "1" ]; then
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo "-f and -x can not coexist"
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo "$USAGE"
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  exit 1
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddfi
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddif [ $# -lt 6 ]; then
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo "$USAGE"
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  exit 1
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddfi
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddevice_phone=$1
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddnum_of_threads=$1
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddsms_per_thread=$1
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddmms_per_thread=$1
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimage_list_file=$1
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddsql_file=$1
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddshift
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddict_lines=`wc -l < $DICT`
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimage_files=`wc -l < $image_list_file`
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddif [ $mms_per_thread -gt "0" ]; then
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  if [ ! -f $image_list_file ]; then
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo "No image files for creating MMS messages"
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    exit 1
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  fi
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddfi
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddechoerr ()
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo "$@" 1>&2;
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddrandom_value ()
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo $(( $RANDOM % $1 + 1 ))
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodddict_word ()
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  local v=$(random_value 30000)
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  sed $v"q;d" $DICT
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddgen_message ()
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  local words=$(random_value $MAX_WORDS_PER_MESSAGE)
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  local message=
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  for k in `seq 1 $words`;
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  do
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    local word=$(dict_word)
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    message="$message $word"
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  done
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo $message | sed -e "s/'//g"
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddrandom_image ()
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  local v=$(random_value $image_files)
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  sed $v"q;d" $image_list_file
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddadd_sql ()
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo $1 >> $sql_file
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddadb_sql ()
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd{
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo $1
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb shell sqlite3 data/data/com.android.providers.telephony/databases/mmssms.db "$1"
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd######################################################################################
160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd######################################################################################
161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddif [ $opt_exec_only -eq "0" ]; then
163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  # clean up sql file
164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  rm -f $sql_file
165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  # add sql to clean up database
167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from pdu where _id>=$TABLE_SMS_START_ID;"
168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from part where _id>=$TABLE_SMS_START_ID;"
169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from addr where _id>=$TABLE_SMS_START_ID;"
170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from sms where _id>=$TABLE_SMS_START_ID;"
171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from threads where _id>=$TABLE_THREADS_START_ID;"
172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  add_sql "delete from canonical_addresses where _id>=$TABLE_CANONICAL_ADDRESSES_START_ID;"
173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  for i in `seq 1 $num_of_threads`;
175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  do
176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo "Creating thread $i ......"
178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Get random phone number
181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    value=$(random_value 1000)
182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    middle=$(printf '%03d' $value)
183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    value=$(random_value 10000)
184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    last=$(printf '%04d' $value)
185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    phone="+1$AREA_CODE$middle$last"
186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo $phone
187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    timestamp=$(( $START_TIMESTAMP_IN_SECONDS + 5 * $TIMESTAMP_INC_IN_SECONDS * $i ))
190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Generate threads
192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    addr_id=$(( $TABLE_CANONICAL_ADDRESSES_START_ID + $i ))
193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    add_sql "insert into canonical_addresses (_id,address) values ($addr_id,'$phone');"
194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    thread_id=$(( $TABLE_THREADS_START_ID + $i ))
196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    add_sql "insert into threads (_id,date,message_count,recipient_ids,snippet,snippet_cs,read,type,error,has_attachment) values ($thread_id, $timestamp, $sms_per_thread, $addr_id, 'snippet', 0, 1, 0, 0, 0);"
197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Generate SMS
199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    if [ $sms_per_thread -gt "0" ]; then
200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      half_timestamp_inc=$(( 500 + ((($sms_per_thread + $mms_per_thread) * $TIMESTAMP_INC_IN_SECONDS) * 500 / $sms_per_thread) ))
201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      for j in `seq 1 $sms_per_thread`;
202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      do
203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        message=$(gen_message)
204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        date=$(( ( 1000 * $timestamp ) - $half_timestamp_inc * ( 2 * ($sms_per_thread - $j) + ( $i % 2 ) ) ))
205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        message_id=$(( $TABLE_SMS_START_ID + $sms_per_thread * $i * 2 + (2 * $j) ))
206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        message_type=$(( $j % 2 + 1 ))
207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        add_sql "insert into sms (_id,thread_id,address,person,date,status,type,body,read,seen) values ($message_id, $thread_id, '$phone', '$phone', $date, -1, $message_type, '$message', 1, 1);"
208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      done
209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    fi
210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    # Generate MMS
212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    if [ $mms_per_thread -gt "0" ]; then
213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      half_timestamp_inc=$(( 1 + ((($sms_per_thread + $mms_per_thread) * $TIMESTAMP_INC_IN_SECONDS) / ( 2 * $mms_per_thread) ) ))
214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      for j in `seq 1 $mms_per_thread`;
215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      do
216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        image_line=$(random_image)
217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        image=`echo $image_line | awk '{ print $1 }'`
218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        width=`echo $image_line | awk '{ print $2 }'`
219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        height=`echo $image_line | awk '{ print $3 }'`
220d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        size=`echo $image_line | awk '{ print $4 }'`
221d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        date=$(( $timestamp - $half_timestamp_inc * ( 2 * ($mms_per_thread - $j) + ( ($i+1) % 2 ) ) ))
222d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        message_id=$(( $TABLE_SMS_START_ID + $sms_per_thread * $i * 2 + (2 * $j + 1) ))
223d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        message_type=$(( $j % 2 + 1 ))
224d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if [ $message_type -eq '1' ]; then
225d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          m_type=132
226d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        else
227d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          m_type=128
228d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        fi
229d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if [ $opt_for_gb -eq "0" ]; then
230d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into pdu (_id,thread_id,date,date_sent,msg_box,read,m_id,sub,sub_cs,ct_t,m_cls,m_type,v,m_size,pri,rr,tr_id,d_rpt,locked,seen,text_only) values ($message_id, $thread_id, $date, 0, $message_type, 1, 'hmma3p5s1a3m526@w.tmomail.net', 'no subject', 106, 'application/vnd.wap.multipart.related', 'personal', $m_type, 18, $size, 129, 129 , '$message_id', 129, 0, 1, 0);"
231d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        else
232d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into pdu (_id,thread_id,date,msg_box,read,m_id,sub,sub_cs,ct_t,m_cls,m_type,v,m_size,pri,rr,tr_id,d_rpt,locked,seen) values ($message_id, $thread_id, $date, $message_type, 1, 'hmma3p5s1a3m526@w.tmomail.net', 'no subject', 106, 'application/vnd.wap.multipart.related', 'personal', $m_type, 18, $size, 129, 129 , '$message_id', 129, 0, 1);"
233d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        fi
234d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        id_1=$(( $message_id ))
235d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        id_2=$(( $message_id + 1 ))
236d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        smil=$(printf "$SMIL" $height $width $height $width $image)
237d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        add_sql "insert into part (_id,mid,seq,ct,cid,cl,text) values ($id_1, $message_id, -1, 'application/smil', '<smil>', 'smil.xml', '$smil');"
238d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        image_no_suffix=${image%.*}
239d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        add_sql "insert into part (_id,mid,seq,ct,cid,cl,_data) values ($id_2, $message_id, 0, 'image/jpeg', '$image_no_suffix', '$image', '$PART_DIR/$image');"
240d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if [ $message_type -eq '1' ]; then
241d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into addr (_id,msg_id,address,type,charset) values ($id_1, $message_id, '$phone', 137, 106);"
242d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into addr (_id,msg_id,address,type,charset) values ($id_2, $message_id, '$device_phone', 151, 106);"
243d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        else
244d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into addr (_id,msg_id,address,type,charset) values ($id_1, $message_id, 'insert-address-token', 137, 106);"
245d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd          add_sql "insert into addr (_id,msg_id,address,type,charset) values ($id_2, $message_id, '$phone', 151, 106);"
246d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        fi
247d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      done
248d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    fi
249d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  done
250d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddfi
251d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
252d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd# Push to device
253d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddif [ $opt_sql_only -eq "0" ]; then
254d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  # make sure we have access
255d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb root
256d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
257d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  # Push all local jpgs or gifs to device, being lazy here.
258d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  if [ $mms_per_thread -gt "0" ]; then
259d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    for file in `ls *.jpg *.gif`;
260d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    do
261d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      echo "adb push $file $PART_DIR/$file"
262d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd      adb push $file $PART_DIR/$file
263d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    done
264d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  fi
265d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
266d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo "adb push $sql_file /data/fillsms"
267d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb push $sql_file /data/fillsms
268d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo
269d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb_sql ".read /data/fillsms"
270d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo
271d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb_sql "select count(*) from canonical_addresses where _id>=$TABLE_CANONICAL_ADDRESSES_START_ID;"
272d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo
273d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  adb_sql "select count(*) from threads where _id>=$TABLE_THREADS_START_ID;"
274d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  echo
275d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  if [ $sms_per_thread -gt "0" ]; then
276d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    adb_sql "select count(*) from sms where _id>=$TABLE_SMS_START_ID;"
277d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
278d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  fi
279d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  if [ $mms_per_thread -gt "0" ]; then
280d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    adb_sql "select count(*) from pdu where _id>=$TABLE_SMS_START_ID;"
281d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
282d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    adb_sql "select count(*) from part where _id>=$TABLE_SMS_START_ID;"
283d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
284d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    adb_sql "select count(*) from addr where _id>=$TABLE_SMS_START_ID;"
285d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    echo
286d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd  fi
287d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddfi
288