Updating
Updating firmware on Furhat
To update firmware on a Furhat:
- Go to server menu
 - Select Update firmware
 - If a new version is available, you can automatically update it here.
 - You can also upload a firmware manually downloaded here
 
Updating SDK
To update the SDK:
- Pull the latest changes using 
git pull - See the changelog for detailed changes
 
Breaking changes
Update to: Firmware > 2017-01-01 or Furhat SDK > 0.2.0
When updating to the latest firmware version for Furhat, there may be a compatibility issues with Skills. Skills made prior to December of 2016 will require a small change to work with the latest firmware. This process is simple and in this guide we will go through the necessary steps.
Step 1: Download skills from Furhat
To update the Skill, we will need to adjust a file that is not available in the 'web interface' view. Therefore use go to 'server > packages' and download the Skills you need to update.
You do not need to import these Skills into an IDE, as we will only change a few lines in one file.
Step 2: Change the init() function in $YourSkillName$Skill.java file
- First step is to locate the init() method in the $YourSkillName$Skill.java file.
 - Remove SkillHandler handler parameter from the init method.
 - If you find any other methods that use the SkillHandler as a parameter, treat them similarly.
 
Before:
public void init(SkillHandler handler) throws Exception {
  // Code that remains unchanged
  // ...
}
After:
public void init() throws Exception {
  SkillHandler handler = getSkillHandler();
  // Code that remains unchanged
  // ...
}
Step 3: Change the query() function in $YourSkillName$Skill.java file
- In your skill file, see if you have a 
query()method. 
If you don't want your skill to be queryable from other skills, remove the query method (if you have it).
If you want your skill to be queryable from other skills:
- import iristk.furhat.Queryable and iristk.furhat.QueryResponse
 - Implement the Queryable interface by adding the implements Queryable
 - Implement the query() method
 
See below example:
Before:
// $YourSkillName$Skill.java
// ...
import iristk.furhat.skill.Response;
// ...
public class $YourSkillName$Skill extends Skill {
  // ...
  @Override
  public Response query(String text){
    // Your implementation
  }
}
After:
// $YourSkillName$Skill.java
// ...
import iristk.furhat.Queryable;
import iristk.furhat.QueryResponse;
// ...
public class $YourSkillName$Skill extends Skill implements Queryable {
  // ...
    @Override
    public QueryResponse query(String queryText) {
        // Your implementation
    }
}
Step 4: Reupload the skills to your furhat
You can now zip the contents again and then re-upload this version of your Skill to your Furhat. For instructions on this, check how to package and upload a skill.