Skip to content

charisoudis/Embedded-Final-Project-2019

Repository files navigation

[από την εκφώνηση]

Εισαγωγή

Σκοπός αυτής της εργασίας είναι η ανάπτυξη ενός συστήματος ανταλλαγής απλών μηνυμάτων, βασισμένο σε ένα ενσωματωμένο σύστημα πραγματικού χρόνου το οποίο θα διαχειρίζεται την ροή των μηνυμάτων. Τα μηνύματα παράγονται από κάθε συσκευή που αντιστοιχεί σε έναν φοιτητή και διαμοιράζονται μεταξύ όλων των δυνατών συσκευών έως ότου φτάσουν στον προορισμό τους.

Προδιαγραφές

Πιο συγκεκριμένα, θα πρέπει να αναπτυχθεί μία εφαρμογή σε C για την αντίστοιχη ενσωματωμένη συσκευή (zsun ή Raspberry Pi). Η εφαρμογή θα είναι υπεύθυνη να αποστέλλει και να λαμβάνει μηνύματα μέσω WiFi με οποιαδήποτε άλλη συσκευή βρεθεί στο εύρος λειτουργίας της. Κάθε μήνυμα θα περιλαμβάνει τα εξής πεδία:

  • ΑΕΜ αποστολέα: uint32
  • AEM παραλήπτη: uint32
  • Χρόνος δημιουργίας: Linux timestamp (uint64)
  • Κείμενο μηνύματος: ASCII char[256]

Ένα μήνυμα θα αποτελείται από τα 4 πεδία χωρισμένα με το σύμβολο _ (underscore). Π.χ.

7592_6998_1387909800_Test message

Το πρόγραμμα θα κρατάει λίστα με όλα τα μηνύματα τα οποία έχει λάβει ή δημιουργήσει και τις συσκευές στις οποίες τα έχει στείλει. Η λίστα θα έχει πεπερασμένο μήκος: αν ξεπεραστεί το μήκος, διαγράφονται τα παλαιότερα στοιχεία. Αυτό μπορεί να υλοποιηθεί με έναν κυκλικό buffer προκαθορισμένου μήκους. Για τους σκοπούς της εργασίας, θα θέσουμε το μήκος ώστε να χωράει 2,000 μηνύματα. Κάθε φορά που η ενσωματωμένη συσκευή συναντάει μία καινούργια συσκευή, πραγματοποιούνται τα ακόλουθα βήματα:

  1. Αποστέλλονται όλα τα μηνύματα που δεν έχουν σταλεί στον συγκεκριμένο παραλήπτη στο παρελθόν
  2. Λαμβάνονται όλα τα μηνύματα που έχει να αποστείλει η νέα συσκευή και αποθηκεύονται στην λίστα, αφού πρώτα γίνει έλεγχος για διπλότυπα (όλα τα πεδία πρέπει να είναι ίδια για να χαρακτηριστεί μία εγγραφή διπλότυπη).

Κρατήστε στατιστικά στοιχεία της χρήσης της υπηρεσίας (πότε βρέθηκε καινούργια συσκευή, ποια ήταν αυτή, για πόσο χρόνο) και παρουσιάστε στατιστικά.

Ανά τακτά χρονικά διαστήματα (τυχαίας διάρκειας, της τάξης του 1-5 λεπτά) κάθε συσκευή θα παράγει νέο μήνυμα για κάποιον τυχαίο χρήστη (από την λίστα των ΑΕΜ που δίνεται).

Η διεύθυνση IP κάθε χρήστη θα είναι η 10.0.[xx].[yy] όπου [xx] τα πρώτα 2 ψηφία του ΑΕΜ και [yy] τα τελευταία 2.

Παραδοτέα

  1. Τον πηγαίο κώδικα από τις εφαρμογές σας.
  2. Μία γραπτή αναφορά όπου επεξηγεί το σκεπτικό του αλγορίθμου σας, όπως και στοιχεία όπου παρουσιάζουν την αποτελεσματικότητα του (Στατιστικά στοιχεία, μετρήσεις, screenshots) και πως έγινε έλεγχος της ορθότητας.
  3. Αποτελέσματα χρήσης από 2 ώρες πραγματικής λειτουργίας στους χώρους του ΑΠΘ.

Ημερομηνία παράδοσης: Τέλος εξεταστικής περιόδου Ιουνίου ή Σεπτεμβρίου 2019