/* Messenger.h * * An implementation of a simple text chat only messenger on the tox network core. * * NOTE: All the text in the messages must be encoded using UTF-8 Copyright (C) 2013 Tox project All Rights Reserved. This file is part of Tox. Tox is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Tox is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Tox. If not, see . */ #ifndef MESSENGER_H #define MESSENGER_H #include "net_crypto.h" #include "DHT.h" //add a friend //set the data that will be sent along with friend request //client_id is the client id of the friend //data is the data and length is the length //returns the friend number if success //return -1 if failure. int m_addfriend(uint8_t * client_id, uint8_t * data, uint16_t length); //add a friend without sending a friendrequest. //returns the friend number if success //return -1 if failure. int m_addfriend_norequest(uint8_t * client_id); //return the friend id associated to that client id. //return -1 if no such friend int getfriend_id(uint8_t * client_id); //copies the public key associated to that friend id into client_id buffer. //make sure that client_id is of size CLIENT_ID_SIZE. //returns 0 if success //return -1 if failure. int getclient_id(int friend_id, uint8_t * client_id); //remove a friend int m_delfriend(int friendnumber); //return 4 if friend is online //return 3 if friend is confirmed //return 2 if the friend request was sent //return 1 if the friend was added //return 0 if there is no friend with that number. int m_friendstatus(int friendnumber); //send a text chat message to an online friend. //returns 1 if packet was successfully put into the send queue //return 0 if it was not. int m_sendmessage(int friendnumber, uint8_t * message, uint32_t length); //Set our nickname //name must be a string of maximum MAX_NAME_LENGTH length. //return 0 if success //return -1 if failure int setname(uint8_t * name, uint16_t length); //get name of friendnumber //put it in name //name needs to be a valid memory location with a size of at least MAX_NAME_LENGTH (128) bytes. //return 0 if success //return -1 if failure int getname(int friendnumber, uint8_t * name); //set the function that will be executed when a friend request is received. //function format is function(uint8_t * public_key, uint8_t * data, uint16_t length) void m_callback_friendrequest(void (*function)(uint8_t *, uint8_t *, uint16_t)); //set the function that will be executed when a message from a friend is received. //function format is: function(int friendnumber, uint8_t * message, uint32_t length) void m_callback_friendmessage(void (*function)(int, uint8_t *, uint16_t)); //run this at startup void initMessenger(); //the main loop that needs to be run at least 200 times per second. void doMessenger(); //SAVING AND LOADING FUNCTIONS: //returns the size of the messenger data (for saving) uint32_t Messenger_size(); //save the messenger in data (must be allocated memory of size Messenger_size()) void Messenger_save(uint8_t * data); //load the messenger from data of size length. int Messenger_load(uint8_t * data, uint32_t length); #endif