NSLU2-Linux
view · edit · print · history

Applications.GembirdSiS-PM History

Hide minor edits - Show changes to markup

February 17, 2007, at 03:02 PM by skraatz -- sispmctl on debian
Changed lines 16-20 from:

The sispmctl command works letting me switch the power to each socket on and off.

to:

The sispmctl command works letting me switch the power to each socket on and off.

--- Note Sebastian Kraatz: sispmctl compiles without errors using Debian on the NSLU2, works like a charm. I'm using it to switch on power of my laser printer when a print job arrives: http://www.skraatz.de/gadgets/debian-etch-auf-dem-nslu2

June 15, 2006, at 11:07 PM by bensims3dcouk --
Changed lines 8-11 from:

the make errors

to:

make returns this error

Changed lines 14-16 from:

but make install works - I haven't yet worked out whats wrong with the configure that causes this. The sispmctl command works although I've yet to test it with the device.

to:

but it appears that the code compiles as make install works when run as root.

The sispmctl command works letting me switch the power to each socket on and off.

June 15, 2006, at 05:49 PM by bensims3dcouk --
Changed line 16 from:

but make install works - sorry I don't know too much about Makefiles

to:

but make install works - I haven't yet worked out whats wrong with the configure that causes this. The sispmctl command works although I've yet to test it with the device.

June 15, 2006, at 05:47 PM by bensims3dcouk --
Added lines 9-16:

the make errors

 
armeb-linux-gcc: 2.3a": No such file or directory

but make install works - sorry I don't know too much about Makefiles

June 15, 2006, at 05:33 PM by bensims3dcouk --
Changed lines 5-168 from:

packages installed slugos-native, libc6-dev, libusb

.configure runs ok but make gets lots of errors

 
ben@Slug:~$
ben@Slug:~$
ben@Slug:~$ ls
sispmctl-2.3a  sispmctl-2.3a.tar  test.c
ben@Slug:~$ cd sispmctl-2.3a/
ben@Slug:~/sispmctl-2.3a$ ls
AUTHORS    INSTALL   Makefile.am  README      config.log     configure.in
COPYING    LICENCE   Makefile.in  aclocal.m4  config.status  src
ChangeLog  Makefile  NEWS         admin       configure
ben@Slug:~/sispmctl-2.3a$ ./configure
checking build system type... armv5teb-unknown-linux
checking host system type... armv5teb-unknown-linux
checking target system type... armv5teb-unknown-linux
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for libusb-config... /usr/bin/libusb-config
checking if libusb version is >= 0.1.7... yes
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... no
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for uid_t in sys/types.h... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... no
checking for memset... no
checking for socket... no
checking for strchr... no
checking for strdup... no
checking for strerror... no
checking for strncasecmp... no
checking for strrchr... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing depfiles commands

Good - your configure finished. Start make now

ben@Slug:~/sispmctl-2.3a$ make
Making all in .
make[1]: Entering directory `/home/ben/sispmctl-2.3a'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/ben/sispmctl-2.3a'
Making all in src
make[1]: Entering directory `/home/ben/sispmctl-2.3a/src'
if gcc -DPACKAGE_NAME=\"sispmctl\" -DPACKAGE_TARNAME=\"sispmctl\" -DPACKAGE_VERSION=\"2.3a\" -DPACKAGE_STRING=\"sispmctl\ 2.3a\" -DPACKAGE_BUGREPORT=\"email@removed\" -DPACKAGE=\"sispmctl\" -DVERSION=\"2.3a\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=0 -Dmalloc=rpl_malloc  -I. -I.    -Wall -DWEBDIR="\"\"" -DBINDADDR="\"\"" -DDATADIR="\"/usr/local/share/httpd/sispmctl/doc\"" -g -O2  -MT sispm_ctl.o -MD -MP -MF ".deps/sispm_ctl.Tpo" -c -o sispm_ctl.o sispm_ctl.c; \
then mv -f ".deps/sispm_ctl.Tpo" ".deps/sispm_ctl.Po"; else rm -f ".deps/sispm_ctl.Tpo"; exit 1; fi
armeb-linux-gcc: 2.3a": No such file or directory
sispm_ctl.c:33:17: usb.h: No such file or directory
In file included from sispm_ctl.c:35:
sispm_ctl.h:45: error: parse error before '*' token
sispm_ctl.h:45: warning: "struct usb_device" declared inside parameter list
sispm_ctl.h:45: warning: its scope is only this definition or declaration, which is probably not what you want
sispm_ctl.h:45: warning: type defaults to `int' in declaration of `get_handle'
sispm_ctl.h:45: warning: data definition has no type or storage class
sispm_ctl.h:46: error: parse error before '*' token
sispm_ctl.h:51: warning: "struct usb_device" declared inside parameter list
sispm_ctl.h:52: error: parse error before '*' token
sispm_ctl.h:53: error: parse error before '*' token
sispm_ctl.h:54: error: parse error before '*' token
sispm_ctl.c:40: warning: "struct usb_device" declared inside parameter list
sispm_ctl.c:41: error: conflicting types for 'get_id'
sispm_ctl.h:51: error: previous declaration of 'get_id' was here
sispm_ctl.c:41: error: conflicting types for 'get_id'
sispm_ctl.h:51: error: previous declaration of 'get_id' was here
sispm_ctl.c: In function `get_id':
sispm_ctl.c:43: error: dereferencing pointer to incomplete type
sispm_ctl.c: At top level:
sispm_ctl.c:47: error: parse error before '*' token
sispm_ctl.c: In function `usb_command':
sispm_ctl.c:53: error: `b1' undeclared (first use in this function)
sispm_ctl.c:53: error: (Each undeclared identifier is reported only once
sispm_ctl.c:53: error: for each function it appears in.)
sispm_ctl.c:54: error: `b2' undeclared (first use in this function)
sispm_ctl.c:55: error: `status' undeclared (first use in this function)
sispm_ctl.c:61: warning: implicit declaration of function `usb_control_msg'
sispm_ctl.c:61: error: `udev' undeclared (first use in this function)
sispm_ctl.c:70: warning: implicit declaration of function `usb_strerror'
sispm_ctl.c:70: warning: format argument is not a pointer (arg 3)
sispm_ctl.c:71: warning: implicit declaration of function `usb_close'
sispm_ctl.c: At top level:
sispm_ctl.c:81: error: parse error before '*' token
sispm_ctl.c:81: warning: "struct usb_device" declared inside parameter list
sispm_ctl.c:82: warning: return type defaults to `int'
sispm_ctl.c:82: error: conflicting types for 'get_handle'
sispm_ctl.h:45: error: previous declaration of 'get_handle' was here
sispm_ctl.c:82: error: conflicting types for 'get_handle'
sispm_ctl.h:45: error: previous declaration of 'get_handle' was here
sispm_ctl.c: In function `get_handle':
sispm_ctl.c:83: error: `usb_dev_handle' undeclared (first use in this function)
sispm_ctl.c:83: error: `udev' undeclared (first use in this function)
sispm_ctl.c:85: warning: implicit declaration of function `usb_open'
sispm_ctl.c:90: warning: format argument is not a pointer (arg 3)
sispm_ctl.c:94: warning: implicit declaration of function `usb_set_configuration'
sispm_ctl.c:96: warning: format argument is not a pointer (arg 3)
sispm_ctl.c:100: warning: implicit declaration of function `usb_claim_interface'
sispm_ctl.c:102: warning: format argument is not a pointer (arg 3)
sispm_ctl.c:105: warning: implicit declaration of function `usb_set_altinterface'
sispm_ctl.c:107: warning: format argument is not a pointer (arg 3)
sispm_ctl.c: At top level:
sispm_ctl.c:137: error: parse error before '*' token
sispm_ctl.c: In function `sispm_switch_on':
sispm_ctl.c:139: error: `outlet' undeclared (first use in this function)
sispm_ctl.c:139: error: `id' undeclared (first use in this function)
sispm_ctl.c:140: error: `udev' undeclared (first use in this function)
sispm_ctl.c: At top level:
sispm_ctl.c:143: error: parse error before '*' token
sispm_ctl.c: In function `sispm_switch_off':
sispm_ctl.c:145: error: `outlet' undeclared (first use in this function)
sispm_ctl.c:145: error: `id' undeclared (first use in this function)
sispm_ctl.c:146: error: `udev' undeclared (first use in this function)
sispm_ctl.c: At top level:
sispm_ctl.c:149: error: parse error before '*' token
sispm_ctl.c: In function `sispm_switch_getstatus':
sispm_ctl.c:151: error: `outlet' undeclared (first use in this function)
sispm_ctl.c:151: error: `id' undeclared (first use in this function)
sispm_ctl.c:152: error: `udev' undeclared (first use in this function)
sispm_ctl.c:152: error: `status' undeclared (first use in this function)
make[1]: *** [sispm_ctl.o] Error 1
make[1]: Leaving directory `/home/ben/sispmctl-2.3a/src'
make: *** [all-recursive] Error 1
ben@Slug:~/sispmctl-2.3a$


to:

packages installed using ipkg are slugos-native, libc6-dev, libusb, libusb-dev

June 15, 2006, at 09:40 AM by bensims3dcouk --
Changed line 90 from:

if gcc -DPACKAGE_NAME=\"sispmctl\" -DPACKAGE_TARNAME=\"sispmctl\" -DPACKAGE_VERSION=\"2.3a\" -DPACKAGE_STRING=\"sispmctl\ 2.3a\" -DPACKAGE_BUGREPORT=\"nuessle@uni-mannheim.de\" -DPACKAGE=\"sispmctl\" -DVERSION=\"2.3a\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=0 -Dmalloc=rpl_malloc -I. -I. -Wall -DWEBDIR="\"\"" -DBINDADDR="\"\"" -DDATADIR="\"/usr/local/share/httpd/sispmctl/doc\"" -g -O2 -MT sispm_ctl.o -MD -MP -MF ".deps/sispm_ctl.Tpo" -c -o sispm_ctl.o sispm_ctl.c; \

to:

if gcc -DPACKAGE_NAME=\"sispmctl\" -DPACKAGE_TARNAME=\"sispmctl\" -DPACKAGE_VERSION=\"2.3a\" -DPACKAGE_STRING=\"sispmctl\ 2.3a\" -DPACKAGE_BUGREPORT=\"email@removed\" -DPACKAGE=\"sispmctl\" -DVERSION=\"2.3a\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=0 -Dmalloc=rpl_malloc -I. -I. -Wall -DWEBDIR="\"\"" -DBINDADDR="\"\"" -DDATADIR="\"/usr/local/share/httpd/sispmctl/doc\"" -g -O2 -MT sispm_ctl.o -MD -MP -MF ".deps/sispm_ctl.Tpo" -c -o sispm_ctl.o sispm_ctl.c; \

June 15, 2006, at 09:10 AM by bensims3dcouk --
Changed line 9 from:
to:
 [=
Added lines 167-168:

=]

June 15, 2006, at 09:03 AM by bensims3dcouk --
Changed line 9 from:

[=

to:
Deleted line 166:

=]

June 15, 2006, at 09:02 AM by bensims3dcouk -- work in progress
Changed lines 3-167 from:

Having recently acquired one of these devices this page is intended to document building it for OpenSlug 3.10.

to:

Having recently acquired one of these devices this page is intended to document building it for OpenSlug 3.10.

packages installed slugos-native, libc6-dev, libusb

.configure runs ok but make gets lots of errors

ben@Slug:~$ ben@Slug:~$ ben@Slug:~$ ls sispmctl-2.3a sispmctl-2.3a.tar test.c ben@Slug:~$ cd sispmctl-2.3a/ ben@Slug:~/sispmctl-2.3a$ ls AUTHORS INSTALL Makefile.am README config.log configure.in COPYING LICENCE Makefile.in aclocal.m4 config.status src ChangeLog Makefile NEWS admin configure ben@Slug:~/sispmctl-2.3a$ ./configure checking build system type... armv5teb-unknown-linux checking host system type... armv5teb-unknown-linux checking target system type... armv5teb-unknown-linux checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking for libusb-config... /usr/bin/libusb-config checking if libusb version is >= 0.1.7... yes checking how to run the C preprocessor... gcc -E checking for egrep... grep -E checking for ANSI C header files... no checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking netinet/in.h usability... yes checking netinet/in.h presence... yes checking for netinet/in.h... yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for uid_t in sys/types.h... yes checking for stdlib.h... (cached) yes checking for GNU libc compatible malloc... no checking for memset... no checking for socket... no checking for strchr... no checking for strdup... no checking for strerror... no checking for strncasecmp... no checking for strrchr... no configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: executing depfiles commands Good - your configure finished. Start make now ben@Slug:~/sispmctl-2.3a$ make Making all in . make[1]: Entering directory `/home/ben/sispmctl-2.3a' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/home/ben/sispmctl-2.3a' Making all in src make[1]: Entering directory `/home/ben/sispmctl-2.3a/src' if gcc -DPACKAGE_NAME=\"sispmctl\" -DPACKAGE_TARNAME=\"sispmctl\" -DPACKAGE_VERSION=\"2.3a\" -DPACKAGE_STRING=\"sispmctl\ 2.3a\" -DPACKAGE_BUGREPORT=\"nuessle@uni-mannheim.de\" -DPACKAGE=\"sispmctl\" -DVERSION=\"2.3a\" -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=0 -Dmalloc=rpl_malloc -I. -I. -Wall -DWEBDIR="\"\"" -DBINDADDR="\"\"" -DDATADIR="\"/usr/local/share/httpd/sispmctl/doc\"" -g -O2 -MT sispm_ctl.o -MD -MP -MF ".deps/sispm_ctl.Tpo" -c -o sispm_ctl.o sispm_ctl.c; \ then mv -f ".deps/sispm_ctl.Tpo" ".deps/sispm_ctl.Po"; else rm -f ".deps/sispm_ctl.Tpo"; exit 1; fi armeb-linux-gcc: 2.3a": No such file or directory sispm_ctl.c:33:17: usb.h: No such file or directory In file included from sispm_ctl.c:35: sispm_ctl.h:45: error: parse error before '*' token sispm_ctl.h:45: warning: "struct usb_device" declared inside parameter list sispm_ctl.h:45: warning: its scope is only this definition or declaration, which is probably not what you want sispm_ctl.h:45: warning: type defaults to `int' in declaration of `get_handle' sispm_ctl.h:45: warning: data definition has no type or storage class sispm_ctl.h:46: error: parse error before '*' token sispm_ctl.h:51: warning: "struct usb_device" declared inside parameter list sispm_ctl.h:52: error: parse error before '*' token sispm_ctl.h:53: error: parse error before '*' token sispm_ctl.h:54: error: parse error before '*' token sispm_ctl.c:40: warning: "struct usb_device" declared inside parameter list sispm_ctl.c:41: error: conflicting types for 'get_id' sispm_ctl.h:51: error: previous declaration of 'get_id' was here sispm_ctl.c:41: error: conflicting types for 'get_id' sispm_ctl.h:51: error: previous declaration of 'get_id' was here sispm_ctl.c: In function `get_id': sispm_ctl.c:43: error: dereferencing pointer to incomplete type sispm_ctl.c: At top level: sispm_ctl.c:47: error: parse error before '*' token sispm_ctl.c: In function `usb_command': sispm_ctl.c:53: error: `b1' undeclared (first use in this function) sispm_ctl.c:53: error: (Each undeclared identifier is reported only once sispm_ctl.c:53: error: for each function it appears in.) sispm_ctl.c:54: error: `b2' undeclared (first use in this function) sispm_ctl.c:55: error: `status' undeclared (first use in this function) sispm_ctl.c:61: warning: implicit declaration of function `usb_control_msg' sispm_ctl.c:61: error: `udev' undeclared (first use in this function) sispm_ctl.c:70: warning: implicit declaration of function `usb_strerror' sispm_ctl.c:70: warning: format argument is not a pointer (arg 3) sispm_ctl.c:71: warning: implicit declaration of function `usb_close' sispm_ctl.c: At top level: sispm_ctl.c:81: error: parse error before '*' token sispm_ctl.c:81: warning: "struct usb_device" declared inside parameter list sispm_ctl.c:82: warning: return type defaults to `int' sispm_ctl.c:82: error: conflicting types for 'get_handle' sispm_ctl.h:45: error: previous declaration of 'get_handle' was here sispm_ctl.c:82: error: conflicting types for 'get_handle' sispm_ctl.h:45: error: previous declaration of 'get_handle' was here sispm_ctl.c: In function `get_handle': sispm_ctl.c:83: error: `usb_dev_handle' undeclared (first use in this function) sispm_ctl.c:83: error: `udev' undeclared (first use in this function) sispm_ctl.c:85: warning: implicit declaration of function `usb_open' sispm_ctl.c:90: warning: format argument is not a pointer (arg 3) sispm_ctl.c:94: warning: implicit declaration of function `usb_set_configuration' sispm_ctl.c:96: warning: format argument is not a pointer (arg 3) sispm_ctl.c:100: warning: implicit declaration of function `usb_claim_interface' sispm_ctl.c:102: warning: format argument is not a pointer (arg 3) sispm_ctl.c:105: warning: implicit declaration of function `usb_set_altinterface' sispm_ctl.c:107: warning: format argument is not a pointer (arg 3) sispm_ctl.c: At top level: sispm_ctl.c:137: error: parse error before '*' token sispm_ctl.c: In function `sispm_switch_on': sispm_ctl.c:139: error: `outlet' undeclared (first use in this function) sispm_ctl.c:139: error: `id' undeclared (first use in this function) sispm_ctl.c:140: error: `udev' undeclared (first use in this function) sispm_ctl.c: At top level: sispm_ctl.c:143: error: parse error before '*' token sispm_ctl.c: In function `sispm_switch_off': sispm_ctl.c:145: error: `outlet' undeclared (first use in this function) sispm_ctl.c:145: error: `id' undeclared (first use in this function) sispm_ctl.c:146: error: `udev' undeclared (first use in this function) sispm_ctl.c: At top level: sispm_ctl.c:149: error: parse error before '*' token sispm_ctl.c: In function `sispm_switch_getstatus': sispm_ctl.c:151: error: `outlet' undeclared (first use in this function) sispm_ctl.c:151: error: `id' undeclared (first use in this function) sispm_ctl.c:152: error: `udev' undeclared (first use in this function) sispm_ctl.c:152: error: `status' undeclared (first use in this function) make[1]: *** [sispm_ctl.o] Error 1 make[1]: Leaving directory `/home/ben/sispmctl-2.3a/src' make: *** [all-recursive] Error 1 ben@Slug:~/sispmctl-2.3a$

June 13, 2006, at 12:14 PM by bensims3dcouk --
Changed lines 1-3 from:

The software to control this device is hosted at Sourceforge http://sispmctl.sourceforge.net/.

to:

The software to control this device is hosted at Sourceforge http://sispmctl.sourceforge.net/.

Having recently acquired one of these devices this page is intended to document building it for OpenSlug 3.10.

June 13, 2006, at 12:12 PM by bensims3dcouk --
Added line 1:

The software to control this device is hosted at Sourceforge http://sispmctl.sourceforge.net/.

view · edit · print · history · Last edited by skraatz.
Originally by bensims3dcouk.
Page last modified on February 17, 2007, at 03:02 PM