Now that the multi-level state machine is used, the resume function can be
simplified a lot. To actually continue now, you have to call the
OBEX_HandleInput() function.
---
 lib/obex.c        |    2 +-
 lib/obex_object.c |   43 ++++++-------------------------------------
 lib/obex_object.h |    2 +-
 3 files changed, 8 insertions(+), 39 deletions(-)

diff --git a/lib/obex.c b/lib/obex.c
index 991f06f..277dbf2 100644
--- a/lib/obex.c
+++ b/lib/obex.c
@@ -574,7 +574,7 @@ LIB_SYMBOL
 int CALLAPI OBEX_ResumeRequest(obex_t *self)
 {
        obex_return_val_if_fail(self->object != NULL, -1);
-       return obex_object_resume(self, self->object);
+       return obex_object_resume(self->object);
 }
 
 /**
diff --git a/lib/obex_object.c b/lib/obex_object.c
index f888a2d..f0b4b7f 100644
--- a/lib/obex_object.c
+++ b/lib/obex_object.c
@@ -1146,49 +1146,18 @@ int obex_object_readstream(obex_t *self, obex_object_t 
*object,
 
 int obex_object_suspend(obex_object_t *object)
 {
+       if (object->suspend == 1)
+               return -1;
+
        object->suspend = 1;
        return 0;
 }
 
-int obex_object_resume(obex_t *self, obex_object_t *object)
+int obex_object_resume(obex_object_t *object)
 {
-       int ret;
-       uint8_t cmd = obex_object_getcmd(self, object);
-       int allowfinalcmd = TRUE, forcefinalbit = FALSE;
-
-       if (!object->suspend)
-               return 0;
-
-       object->suspend = 0;
-
-       if (object->first_packet_sent && !object->continue_received)
-               return 0;
-
-       if (self->mode == MODE_SRV) {
-               forcefinalbit = TRUE;
-               if (self->state == STATE_REC)
-                       allowfinalcmd = FALSE;
-       }
-
-       ret = obex_object_send(self, object, allowfinalcmd, forcefinalbit);
-
-       if (ret < 0) {
-               obex_deliver_event(self, OBEX_EV_LINKERR, cmd, 0, TRUE);
+       if (object->suspend == 0)
                return -1;
-       } else if (ret == 0) {
-               obex_deliver_event(self, OBEX_EV_PROGRESS, cmd, 0, FALSE);
-               object->first_packet_sent = 1;
-               object->continue_received = 0;
-       } else {
-               if (self->mode == MODE_SRV) {
-                       obex_deliver_event(self, OBEX_EV_REQDONE,
-                                                       cmd, 0, TRUE);
-                       self->state = STATE_IDLE;
-                       return 0;
-               }
-       }
-
-       self->state = STATE_REC;
 
+       object->suspend = 0;
        return 0;
 }
diff --git a/lib/obex_object.h b/lib/obex_object.h
index 5bcbe0b..31a7d80 100644
--- a/lib/obex_object.h
+++ b/lib/obex_object.h
@@ -109,6 +109,6 @@ int obex_object_receive(struct obex *self, struct 
databuffer *msg);
 
 int obex_object_readstream(struct obex *self, struct obex_object *object, 
const uint8_t **buf);
 int obex_object_suspend(struct obex_object *object);
-int obex_object_resume(struct obex *self, struct obex_object *object);
+int obex_object_resume(struct obex_object *object);
 
 #endif
-- 
1.7.5.4


------------------------------------------------------------------------------
Got Input?   Slashdot Needs You.
Take our quick survey online.  Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Openobex-users mailing list
Openobex-users@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/openobex-users

Reply via email to