Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a6bb575
Add resetMap parameter to support save home base after reset
zjn0505 Aug 28, 2025
1483971
Merge pull request #506 from robotemi/sprint_137/reset_map_save_home_…
zjn0505 Aug 28, 2025
015bc6d
Update gradle
zjn0505 Aug 28, 2025
3ebc3fd
add rename_location
362780316 Sep 16, 2025
d2a40d5
Merge pull request #507 from robotemi/sprint_137/rename_location
362780316 Sep 17, 2025
dc8995c
LCD screen display persistence (#509)
362780316 Sep 29, 2025
0066a62
Dev sprint 137 modify floor interface 10 30 (#511)
NextFuture Oct 30, 2025
b11d812
Dev sprint 137 modify floor interface merge (#513)
NextFuture Nov 5, 2025
ebea6ed
Enhance follow speed handling in Robot class and update SpeedLevel en…
johntyty912 Nov 6, 2025
3f69b29
Update version name to 1.137.0.6-SNAPSHOT in gradle.properties
johntyty912 Nov 6, 2025
066cd4f
Add VERY_HIGH and VERY_SLOW options to SpeedLevel enum and update Mai…
johntyty912 Nov 6, 2025
05dc613
remove the VERY_HIGH and VERY_SLOW in customSpeed fallback, which not…
johntyty912 Nov 6, 2025
a46082c
Merge pull request #515 from robotemi/dev_sprint_137_new_options_for_…
John-Robocore Nov 6, 2025
e0e148c
Add documentation for VERY_HIGH and VERY_SLOW options in SpeedLevel enum
johntyty912 Nov 6, 2025
5de6a33
Merge pull request #516 from robotemi/dev_sprint_137_new_options_for_…
John-Robocore Nov 6, 2025
4f6aa4e
Modify newFloor (#517)
NextFuture Nov 11, 2025
54e2ffb
Dev sprint 137 add sequence step (#519)
NextFuture Nov 13, 2025
c53e1a1
add volume drawer (#521)
NextFuture Nov 14, 2025
1ffc9cc
fix renameLocationOnFloor
NextFuture Jan 21, 2026
cb47f76
Merge pull request #525 from robotemi/dev_sprint_137_fix_rename_locat…
zjn0505 Jan 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
applyTo: "sdk/src/main/aidl/com/robotemi/sdk/ISdkService.aidl,sdk/src/main/aidl/com/robotemi/sdk/ISdkServiceCallback.aidl"
---

# AIDL Interface Compatibility Rules

### For `sdk/src/main/aidl/com/robotemi/sdk/ISdkService.aidl` and `sdk/src/main/aidl/com/robotemi/sdk/ISdkServiceCallback.aidl`

**CRITICAL COMPATIBILITY REQUIREMENTS:**

1. **Adding New Interface Methods:**
- ⚠️ **ALWAYS add new methods at the END of the interface**
- ❌ **NEVER insert methods in the middle of existing methods**
- This maintains binary compatibility with existing implementations

2. **Extending Existing Method Parameters:**
- ⚠️ **ALWAYS add new parameters at the END of the method signature**
- ❌ **NEVER insert parameters in the middle of existing parameters**
- This ensures backward compatibility with existing callers

3. **Default Values for New Parameters:**
- `int` parameters: default value is `0`
- `String` parameters: default value is `null`
- `boolean` parameters: default value is `false`
- Always consider the impact of these defaults on existing functionality

### Examples:

✅ **CORRECT - Adding new method at the end:**
```aidl
interface ISdkService {
// ... existing methods ...

// NEW METHOD - added at the end
void newMethod(in String parameter);
}
```

❌ **INCORRECT - Adding method in the middle:**
```aidl
interface ISdkService {
void existingMethod1();
void newMethod(in String parameter); // ❌ BREAKS COMPATIBILITY
void existingMethod2();
}
```

✅ **CORRECT - Extending method parameters at the end:**
```aidl
// Before
void goTo(in String location, int backwards, int noBypass);

// After - new parameter added at the end
void goTo(in String location, int backwards, int noBypass, in String newParameter);
```

❌ **INCORRECT - Adding parameter in the middle:**
```aidl
// ❌ BREAKS COMPATIBILITY
void goTo(in String location, in String newParameter, int backwards, int noBypass);
```

### When Making Changes:

1. Always review the current method order before adding new methods
2. Consider the impact of default values on existing implementations
3. Test compatibility with existing applications
4. Document any breaking changes in release notes

These rules are essential for maintaining backward compatibility with existing Temi robot applications.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ android.defaults.buildfeatures.buildconfig=true
android.nonFinalResIds=false

GROUP=com.robotemi
VERSION_NAME=1.136.0
VERSION_NAME=1.137.0.10-SNAPSHOT
POM_URL=https://github.com/robotemi/sdk/
POM_SCM_URL=https://github.com/robotemi/sdk/
POM_SCM_CONNECTION=scm:git:git://github.com/robotemi/sdk.git
Expand Down
4 changes: 4 additions & 0 deletions sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ repositories {
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
maven {
url 'https://central.sonatype.com/repository/maven-snapshots/'
}
}

android {
Expand Down Expand Up @@ -63,4 +66,5 @@ dependencies {
implementation project(':sdk')
// implementation 'com.robotemi:sdk:1.134.1'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'androidx.core:core-ktx:1.8.0'
}
74 changes: 74 additions & 0 deletions sample/src/main/java/com/robotemi/sdk/sample/EditDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.robotemi.sdk.sample

import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.BaseAdapter
import android.widget.Button
import android.widget.EditText
import android.widget.ListView
import androidx.core.widget.doAfterTextChanged

class EditDialog(
context: Context, private val locations: MutableList<String>,
private val editorActionListener: EditorActionListener
) : Dialog(context) {
private lateinit var listView: ListView
private lateinit var confirmBtn: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_edit_locations)
listView = findViewById(R.id.listView)
val adapter = EditableListAdapter(
context,
locations
)
listView.adapter = adapter
confirmBtn = findViewById(R.id.confirmBtn)
confirmBtn.setOnClickListener {
editorActionListener.editCompleted(this, adapter.oldText, adapter.newText)
}
}

override fun dismiss() {
val view = currentFocus
if (view is EditText) {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
super.dismiss()
}
class EditableListAdapter(
private val context: Context,
private val dataList: MutableList<String>
) : BaseAdapter() {
var newText: String = ""
var oldText: String = ""

override fun getCount(): Int = dataList.size
override fun getItem(position: Int): Any = dataList[position]
override fun getItemId(position: Int): Long = position.toLong()

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(context)
.inflate(R.layout.item_editable_dialog_row, parent, false)

val editText = view.findViewById<EditText>(R.id.name)
editText.setText(dataList[position])

editText.doAfterTextChanged {
oldText = dataList[position]
newText = it.toString()
}
return view
}
}

interface EditorActionListener {
fun editCompleted(editDialog: EditDialog, oldName: String, newName: String)
}
}
Loading