summaryrefslogtreecommitdiffstats
path: root/meif.c
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2012-08-14 13:57:53 +0200
committerPaul Kocialkowski <contact@paulk.fr>2012-08-14 13:57:53 +0200
commit76f203a125733a30964c5696e4dcb60c152db675 (patch)
tree60f2289ef5c28bcd85a6c86706c129810bc3de1e /meif.c
parent9a5827778189b7e0f91879430a4e160567ee6bbd (diff)
downloadbcm4751-76f203a125733a30964c5696e4dcb60c152db675.tar.gz
bcm4751-76f203a125733a30964c5696e4dcb60c152db675.tar.bz2
bcm4751-76f203a125733a30964c5696e4dcb60c152db675.zip
MEIF: Added NACK structure and a few reasons
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'meif.c')
-rw-r--r--meif.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/meif.c b/meif.c
index 4858550..39e9f62 100644
--- a/meif.c
+++ b/meif.c
@@ -431,6 +431,7 @@ int meif_send_patch(int stage)
int meif_dispatch(struct meif_message *meif_message)
{
struct meif_config_values *config_values;
+ struct meif_nack *nack;
static int patch_send_stage = 0;
switch(meif_message->command) {
@@ -441,13 +442,36 @@ int meif_dispatch(struct meif_message *meif_message)
patch_send_stage = 2;
meif_send_patch(patch_send_stage);
} else if(patch_send_stage == 2) {
+ patch_send_stage = 3;
printf("Ready to switch protocol!\n");
return -1;
}
break;
case MEIF_NACK_MSG:
- printf("Got a NACK message\n\n");
+ printf("Got a NACK message\n");
+
+ if(meif_message->data != NULL && meif_message->length >= sizeof(struct meif_nack)) {
+ nack = (struct meif_nack *) meif_message->data;
+ switch(nack->reason) {
+ case MEIF_NACK_GARBAGE_RECEIVED:
+ printf("Reason is: MEIF_NACK_GARBAGE_RECEIVED\n");
+ break;
+ case MEIF_NACK_CHECKSUM_ERROR:
+ printf("Reason is: MEIF_NACK_CHECKSUM_ERROR\n");
+ if(patch_send_stage > 0) {
+ patch_send_stage = 0;
+ printf("Patch send request failed, aborting!\n");
+ }
+ break;
+ default:
+ printf("Reason is: MEIF_NACK_UNKNOWN\n");
+ break;
+ }
+ }
+
+ printf("\n");
+
break;
case MEIF_STATE_REPORT_MSG:
printf("Got a STATE_REPORT message\n\n");